2009-07-15 24 views
1

UIComponentから派生したカスタムコンポーネントがいくつかあります。私はupdateDisplayListをオーバーロードしてカスタム表示にしました。私はこれらのカスタムコンポーネントをレイアウトするレイアウトを作成しましたが、それらを正しく配置するためにカスタムコンポーネントの幅と高さを知る必要があります。それらは動的に作成されます。それらのすべてが作成された後(creationCompletedイベントが発生するたびに)、それらをレイアウトしようとしましたが、width/heightプロパティはまだ0です。 レイアウトプロセスの前にキャンバスに追加しようとしました。動的に作成されたカスタムuicomponentの幅を取得

私の質問は、動的に配置されたカスタムUIComponentを作成し、その幅と高さを知る方法です。私は(内部$幅と$ハイトフィールドを使用して)、幅と高さを設定することができmx_internal名前空間を使用することで

、それが働いているように見えます:

おかげ


編集。しかし、きれいではない/良い解決策。

答えて

1

あなたは、あなたはおそらく、あなたが他の人の間で、measure()メソッドを実装していることを確認したいと思うむしろそのサブクラスの1つからよりも、UIComponentですから継承している場合。あなた自身のUIComponentの実装の詳細については、こちらをFlexのドキュメントをチェックアウトする - ここで読むための情報の良い束がありますが、それはあなたが直接のUIComponentから派生している場合、あなたはおそらく知っておくべきすべてのものです:

http://www.adobe.com/livedocs/flex/3/html/help.html?content=ascomponents_advanced_3.html

希望すると助かります!ちょっとしたコードを投稿してみてください。もっと具体的なものがあります。しかし、チャンスは、それらの値を取得するために必要なものを実装していないことです。 (あなたの本能は正しいので、必要なものを得るためにmx_internalを調べる必要はありません)

+0

また、カスタムコンポーネントを追加する場所も異なります。それらは、createChildrenメソッド、updateDisplayListメソッド、またはMXMLで追加されていますか?しかし、私は問題は、子供たちに「対策」のステップがないことだと思う。 – Glenn

0

これはおそらく動作しますか?

component.getExplicitOrMeasuredWidth() 
component.getExplicitOrMeasuredHeight() 
+0

これは、明示的に設定または測定された幅を返しますが、両方ともゼロです。 $ width/$ heightフィールドだけが、作成と描画の後に便利なものを含んでいます。これらのフィールドをどういうふうに使うか、コンポーネントがwidth/height/measuredWidth ..フィールドに値を書き込むように強制できますか? – spupek

+0

mx_internal名前空間を使用すると、幅と高さを設定でき、動作しているように見えます。しかし、きれいではない/良い解決策。 – spupek

関連する問題