2011-08-04 12 views
0

私は4つのTextInputコントロールをAdobe Airフォームで持っています。 これらはpnlUnlockCodeという名前のパネルに表示されています。for..Adobeエアフォームコントロールの各ループ

は今、私が何をしたいのか、C#で

foreach (Control c in this.Controls) 
{ 
    c.Height = this.Height * (sizes[count].Height/SCALE_H); 
    c.Width = this.Width * (sizes[count].Width/SCALE_W); 
    c.Left = this.Width * (positions[count].X/SCALE_W); 
    c.Top = this.Height * (positions[count].Y/SCALE_H); 
} 

のように、これらの4つのTextInputのためのfor..eachループを実装することです。

この問題を解決してください。

あなたの回答を待っています。

おかげ

答えて

1

次の操作を行うことができます

for(var i:int=0; i < pnlUnlockCode.numElements; i++){ 
    var c:TextInput in pnlUnlockCode.getElementAt(i) 
    ... 
} 
+0

pnlUnlockCodeに 'getChildren'は存在しません。 1061を取得する:静的型spark.components:Panelを持つ参照によって、未定義のメソッドgetChildrenを呼び出します。 – user692887

+0

'getChildren()'は表示オブジェクトコンテナメソッドではありません。代わりに 'numChildren'と' getChildAt'を使用してください。 –

+0

スパークコンテナの場合、getChildAtはもう存在しません。代わりにgetElementAtを使用するようにサンプルコードを更新しました –

0

これは私がしようとするものである:

var numControls : uint = pnlUnlockCode.numChildren; 
for (var i : uint; i < numControls; i++) { 
    var control : TextInput = pnlUnlockCode.getChildAt(i) as TextInput; 
    control.setActualSize(sizes[count].Width/SCALE_W, sizes[count].Height/SCALE_H); 
    control.move(positions[count].X/SCALE_W, positions[count].Y/SCALE_H); 
} 

注意、あなたはAのscaleX, scaleYプロパティを設定することでもスケーリングを適用することができます表示オブジェクト。

そして、ここで別のノート:

setActualSize(w, h)は明らかではない確実にサイズを設定します。私はwidhtheightを1回実行するFlexメソッドを見つけることはできません。だから、おそらく、個別に幅と高さのプロパティを使用する方がよいでしょう。

control.width = ...; 
control.height = ...; 

誰かがこれを確認できますか?

+0

私はそれらを個別に設定するのが最善の方法だと思います。 setActualSizeは他の目的を持っているようです。 –

+0

Flexはパーセンテージ、デフォルト、最小値または最大値とレイアウトルールを考慮して、かなり複雑な「レイアウトパス」でコンポーネントのサイズを計算します。このパスの結果は実際のサイズです。これを独自に設定することもできますが、そうした場合、Flexは次のレイアウトパスでこれをリセット(再計算)します。 –