Flash如何根据孩子计算DisplayObject的维度?

时间:2014-03-24 10:34:30

标签: actionscript-3 flash

我有一个名为Container的类,它扩展了Sprite并添加了手动设置宽度和高度的功能,scaleX和scaleY始终保持为1。

我已将这样的类放入精灵中,并注意到精灵通过内部计算测量自身,而不是实际从吸气剂获得宽度/高度。

这个数学是什么?我如何扩展它以强制Sprite在进行内部测量时考虑我的扩展宽度和高度吸气剂?

1 个答案:

答案 0 :(得分:1)

数学位于getBoundary()函数中,该函数调用所有子项及其自己的图形来确定整个精灵的显示列表边缘的坐标。这就是为什么设置宽度而不进行缩放可能没有用。但是,如果您仍希望这样做,请首先制作包含设置宽度和高度信息的字段,您将在container.widthcontainer.height分配时更新,然后您还会覆盖宽度和高度的getter,返回存储的宽度/高度的最大值以及super.widthsuper.height的调用。

var storedWidth:Number=0; // to not have NaNs
public override function get width():Number {
    var w:Number=super.width; // get width from that math
    if (storedWidth>w) w=storedWidth; // or any other logic, to operate these values
    return w;
}

与高度相同的方法。