2009-04-10 2 views
0

一つは次のようになりますのcreationCompleteでFlexでは、実行時に子レスキャンバスコンポーネントの寸法を取得するにはどうすればよいですか?私のコンポーネントの

<mx:Canvas id="grid" width="100%" height="100%"></mx:Canvas> 

、私はカスタムグリッドレイアウトを作成するために、キャンバスの大きさに基づいて、いくつかの私がスケールするspirteと位置をロードしますが、私がアクセスしたとき'grid'の寸法は0と0が得られます。絶対値を指定せずに寸法を取得する方法はありますか?

答えて

0

これは現時点では確認できませんが、measuredHeightとmeasuredWidthにアクセスできますか?

+0

いいえ、彼らは私にも0,0を与えます。 –

0

キャンバスに1つまたは複数のDisplayObject子が含まれていない限り、適用した割合のサイジングに関係なく、幅と高さのプロパティは常に0と報告されます。

空のダミーのDisplayObjectをキャンバスに追加することはできますが、あまり優雅ではありません。カスタムグリッドをどのように実装するかによって、デザインを再考する必要があります。

+0

私はこの昨日、ハックを試みました:いくつかのランダムなコンポーネントを落とし、キャンバスを測定し、すべての子供を削除します。それはまだ高さと幅が0であると言います。私はこれはまったく直感的ではないと言わなければなりません。 HTML DOMのように動作することを期待していました。 –

+0

私はこれを書く前にこれを試してみました。子コンポーネントは親キャンバスがw/hを報告するために何かを測定する必要があります。測定をチェックする前に子コンポーネントが完全に配置される機会がありましたか? – Stiggler

0

これは作成される可能性がありますが、まだ表示されていませんか?最終的なサイズと形状が導出されるので、実際に描画する必要があるまでは発生しません。幅と高さは実際に使用されている値として文書化されています。

最悪の場合、キャンバスのサイズ変更イベントでそれをトラップしてみてください。

+0

寸法にアクセスする際には問題にはならないと思われます。境界線を描くと、幅と高さが戻されます(2x2) –

0

キャンバスの幅と高さをその親にバインドしてみましたか?それが100%の場合、それは親と同じサイズを持ち、キャンバスの親コンテナーに基づいてスプライト(UIComponent)をバインドまたはサイズ設定することができます。

+0

残念ながら、その親は同じ寸法を報告します。 –

+0

親のサイズが0,0の場合、100%にサイジングすると0,0が返されます。あなたが扱っているMXML階層全体を投稿することは可能ですか? –

関連する問題