0

私は標準的な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ますか?

4

1 に答える 1

1

レイアウトの場合、測定方法でターゲット サイズを変更し、幅/高さを直接設定するのではなく、測定値を設定する必要があります。

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

測定幅/高さはコンポーネントの推奨サイズで、測定最小幅/高さはコンポーネントの最小サイズです。

于 2013-01-17T13:57:04.800 に答える