0

多くの children を保持するObjectHolderextendsコンポーネントがあります。ただし、 を使用してこれらの子を に追加した後、その幅と高さはゼロのままです。を含む子コンポーネントのサイズに自動的に拡張することは可能ですか?UIComponentUIComponentsaddChild()ObjectHolderUIComponent

public class ObjectHolder extends UIComponent
{       
    public function ObjectHolder()
    {
        var c1:UIComponent = new UIComponent();
        c1.graphics.beginFill( 0xffffff );
        c1.graphics.drawRect(0, 0, 100, 100);
        addChild( c1 );
        trace( this.width );  // Displays zero
    }
}
4

2 に答える 2

2

コンポーネントのサイズを変更するには、メソッドを実装measure()する必要があります。ただし、カスタム コンポーネントの作成に関するその他の推奨事項にも従う必要があります。あなたの場合、createChildren()methodに子コンポーネントを作成して追加する必要があります。

于 2011-08-25T14:30:39.980 に答える
1

UIComponent が含まれている子コンポーネントのサイズに自動的に拡張することは可能ですか?

正式な答えはノーです。コンポーネントは、独自の高さと幅の値を設定する責任を負いません。コンポーネントの親によって設定された値に基づいて、子のサイズと配置のみを担当します。

コンポーネントに measure() メソッドを実装すると、それを使用して、コンポーネントの測定幅と測定高さを設定できます。これは、本質的に、すべての子要素を適切に配置およびサイズ設定するために必要な理想的なサイズについて、親のコンテナーに提供する提案になります。独自のコンポーネントは、渡された unscaledWidth および unscaledHeight 値に基づいて、 updateDisplayList() でサイズ設定および配置する必要があります。

ほとんどの場合、Flex のデフォルト コンテナはこれらのサイズ設定値を受け入れます。そうでない状況もありますが。たとえば、子コンテナが必要とするサイズが親のサイズよりも大きい場合です。

于 2011-08-25T15:35:41.677 に答える