在updateDisplayList方法中更改元素大小

时间:2013-01-17 09:52:19

标签: flex actionscript

我有标准的Group控件,我正在为它编写新的布局。在这个布局中,我重写了updateDisplayList方法。经过一些计算后,我想将Group控件的大小更改为此方法中的计算值,如下所示:

override public function updateDisplayList(containerWidth:Number, containerHeight:Number):void {
///// Here are some calculations.
layoutTarget.width = maxWidth;
layoutTarget.height = maxHeight + _padding;
}

但是当我这样做时,我在这里得到了无限循环。 updateDisplayList被一遍又一遍地调用。并且在每次通话时layoutTarget都有旧的宽度/高度值。 有没有正确的方法可以从layoutTarget更改updateDisplayList尺寸?

1 个答案:

答案 0 :(得分:1)

对于布局,您应该在measure方法中更改目标大小并直接设置测量的..值而不是宽度/高度

override public function measure():void
{
    //calculate maxWidth and maxHeight here
    target.measuredWidth = target.measuredMinWidth = maxWidth;
    target.measuredHeight = target.measuredMinHeight = maxHeight+_padding;
}

measuredWidth / Height是首选的组件大小,measuredMinWidth / Height是组件的最小大小。