2011-01-19 7 views
0

子供を追加した後にコンポーネントの実際の高さを取得したいと思います。フレックス3 - コンポーネントの実際のサイズを取得する

デバッグモードで変数タブを調べると、 $ height(正しい値:138)と/ height(間違った値:10)という2種類の高さ変数があります。

私はディスプレイが更新されていないので、正しい高さをcomponent.heightで取得していないと思いますが、$ heightの値はどのように取得できますか?あなたが提供することができます任意の助け

感謝=)

よろしく、 BS_C3


@Flextras再び

、おかげであなたの答えのためにたくさん!それは本当に詳細です=)

Measuredheightは、私が探している値を与えてくれません。また、explicitHeightには値(NaN)がありません。ここでは...

を私は今テストすることはできませんので、私はunscaledHeightのために言うことができない私が持っているものの構造です:

MainContainer - Canvas 
    BOX1 - Canvas (height = 100) 
    BOX2 - Canvas (height = 100) 
    VariableBox - Canvas (height: depends on the height of it's variable number of children) 
    Text - TextArea 

私はテキストを配置するためにVariableBoxの高さを必要とします。

関数は次のようになります。

updateDisplay(){ 
    for(i;i<list.length;i++){ 
     VariableBox.addChild(new HBox); 
    } 
    // reposition Text depending on VariableBox's height 
} 

私は任意のコードを与えていないよ知っているが、私は今、私の作業のコンピュータ上> _ <

・ホープ、このことができないんだけど!

答えて

0

最終的な解決策:

私は最終的に私は私が動的にいくつかの子供たちを追加し、それは高さwasnだ先の親コンテナを持っていた...

をいくつかの贅沢なものをやってなくて私のために満足していますいくつかの回避策を見つけました更新されていません。私が持っていた問題は、measuredHeightもexplicitHeightもheightも、親コンテナのunscaledHeightも、私が必要としていた高さを私に与えていないということでした。

したがって、各子のcreationCompleteにリスナーを追加しました。作成完了イベントが開始されると、子のすべてのコントロールが考慮されます。このとき、親コンテナのmeasuredHeightは期待値に設定されます。いくつかの有用な情報を与えている再びFlextrasへ

parentContainer.height = parentContainer.measuredHeight 

感謝=)

よろしくを:だから、僕は設定する必要がありました。

5

短い答え:getMeasuredOrExplicitWidth()getMeasuredOrExplicitHeight()の方法を使用してください。

多くの場合、heightまたはwidthは、これらのメソッドと同じ値を返します。

回答時間: あなたはどのコンポーネントを使用していますか?これをFlexでタグ付けしたので、これをUIComponentを拡張するFlexのビジュアルコンポーネントと見なします。

あなたはいくつかの異なる高さの値を見ますが、子供のサイズを決めるのは常に親の責任であることに注意してください。コンポーネントに子を追加しても、必ずしも高さや幅が変更されるわけではありません。それは、子を追加するコンポーネントが子供を考慮に入れるかどうかによって異なります。

まず、measuredHeightmeasuredWidthを見てください。これらは、測定方法を使用して計算されたコンポーネントの推奨サイズ値です。 HBoxやVBoxなどの一部のコンポーネントは、自動的に子を認識し、サイズを計算する際にこれらを使用します。他のコンポーネント(UIComponentなど)では、measuredHeightまたはmeasuredWidthを設定するときに子プロセスを考慮しません。

次に、explicitHeightとexplicitWidthを見ることができます。高さまたは幅を設定すると、これらの値が設定されます。 setActualSize()メソッドを使用すると、これらの値が設定されているとは思われません。フードの下にはいくつかの魔法があり、explicitHeightexplicitWidthは高さと幅の後ろに隠されています。彼らはしばしば同じですが、必ずしもそうではありません。

通常、スケーリングを扱っていませんが、コンポーネントの拡大/縮小されていない高さと幅が必要な場合は、コンポーネントの保護されたプロパティであるunscaledWidthunscaledHeightがあります。私はそれらがupdateDisplayList()メソッドに渡される値だと思います。

子コンポーネントを追加または削除した後にコンポーネントのサイズを変更するには、そのコンポーネントが独自のライフサイクルを経る必要があります。だから、このコード:コンテナは(対策を実行する機会がなかったため、

trace(container.width); 
container.addChild(myChild); 
trace(container.width); 

はおそらく)、コンテナの幅を変更することはありません、にupdateDisplayList()、またはにcommitProperties()メソッド。

これで解決できない場合は、より具体的なコードを入力する必要があります。

+0

ありがとう=)私は自分の投稿を編集しました。よろしくお願いします。 –

+0

コンピュータに戻ったら、実際のコードを入力してください。しかし、私は、updateDisplayListに子を追加することを強くお勧めします。それをcreateChildrenで行うか、初期コンポーネントの作成後に行う場合はcommitPropertiesを実行します。 – JeffryHouser

+0

最終的には不要=)もう一度ありがとう^^ –

関連する問題