我有一个名为广场对象,扩展Sprite:为什么无法在Sprite扩展对象的容器中获取覆盖宽度和高度?
package {
import flash.display.Sprite;
import flash.geom.Point;
public class Square extends Sprite {
private var _point:Point = new Point(100, 100);
public function Square() {
// empty object
}
override public function set height(n:Number):void {
_point.y = n;
}
override public function set width(n:Number):void {
_point.x = n;
}
override public function get height():Number {
return _point.y;
}
override public function get width():Number {
return _point.x;
}
}
}
在我的主文档类,我试过访问宽度和方形容器的高度,这样的:
import flash.display.Sprite;
var container:Sprite = new Sprite();
var square:Square = new Square();
container.addChild(square);
trace(square.width, square.height); // 100 100
trace(container.width, container.height); // 0 0
我知道我的Square对象是空的,但我重写了宽度和高度方法。我在第一个追踪中得到了它,但不是在第二个追踪中,如果它不起作用?
'Sprite :: width'和'Sprite :: height'内的'Sprite'的潜在类型转换可以是您的覆盖原因不会影响容器宽度和高度的计算。未经证实ofc :) – Vesper
您的预期成果是什么?在'Square'中,如果查询的是_imaginary_(从Point取得),但是您没有真正改变任何大小(您的“空对象”没有大小),则覆盖width/height的_truthful_值。你做一个新的'容器'(也有零大小),并添加零大小的“Square”作为孩子。总大小=零。你可以尝试(未测试)为'override public function get height():String',它返回为'var _string:String =“hello”; return _string;'现在如果你使用trace(square.height)来检查;'应该产生'hello'。它如何增加容器的大小?它不会 –
PS:一个''Point'只是用来记录一些位置/坐标等。尝试在'Square'类中创建一个'Shape'(或任何视觉内容)来影响报告的大小尺寸。你想通过重写来实现什么?也许有一个解决方案,如果你解释@Vesper –