2009-05-11 8 views
0

ループごとに複数のvbox-esを作成する必要があります。 今私はこのようなことをしたい。actionscriptで動的変数vboxを作成するには

formsArray ["vb" + counter] =新しいVBox;formsArray ["vb" + counter] .visible = true;

ラベルなどを追加してください。

私はこの問題を解決できません。私のvbox-esの動的変数名を作成する方法は誰にでも分かりますか?

おかげ

答えて

0

まず第一には、連想配列を使用するには、オブジェクトではなく配列(おそらく、あなたはすでにそれから気にしない、されている)を使用する必要があります。

あなたは次のように何をしたい達成することができます:

var vbox:VBox; 
var formsArray:Object = new Object(); 
var counter:int = 0; 

for each(<statement>) 
{ 
    vbox = new VBox(); 
    formsArray[("vb" + counter.toString())] = vbox; 
    counter++; 
} 

のVBoxのVisibleプロパティは、デフォルトでtrueので、明示的に設定する必要はありませんです。あなたは本当にあなたがやりたいために動的参照を使用する必要はありません

:コメント欄に追加の質問へ

回答。 VBoxをルートタグとして新しいMXMLクラスを作成することで、VBoxクラスを拡張するカスタムコンポーネントを作成することをお勧めします。これらの行に沿って何か:

<mx:VBox ... > 

    <mx:Button ... click="btnClickHandler()"/> 
    <mx:Script> 
     <![CDATA[ 

      // Toggles visibility of the VBox 
      private function btnClickHandler():void 
      { 
       visible = !visible; 
      } 

     ]]> 
    </mx:Script> 

</mx:VBox> 

これらのカスタムVBox:esを必要なだけインスタンス化できます。ただし、VBoxを非表示にすると、含まれているボタンも非表示になり、再度クリックするのが難しくなります。 :)あなたはおそらくそれに対処したいと思います。とにかく、これが正しい方向に向いてくれることを願っています。

+0

ので、それが動作するかどうか確認してください、あなたの迅速な応答をあなたにない感謝ます:void {openEdit(formsArray [( "VB" +:私はVBOX btn.addEventListener(MouseEvent.CLICK、関数()にBTNを追加 counter.toString())])、false); 私がボタンを押すと、私は(例えば)可視状態を見たいと思う。 だから私は プライベート関数openEditAccount(VB2:VBoxの):ような何かを、ボイド \t \t { \t \t \t \t Alert.show(vb2.visible.toString()); } 私は間違っていますか? –

+0

申し訳ありませんが、私はあなたのコメントをよく理解していません。動的なイベントハンドラ関数を追加しようとしている方法で判断すると、JSでのコーディングに慣れています。これはおそらく、あなたが物事を行うための最良の方法ではありません。あなたは何をしようとしているのかを説明して、あなたが持っている問題についてちょっと説明してください。あなたはそれについて新しい質問を作りたいと思うかもしれません。あなたの元の質問は、答えによって完全に解決されるべきです。 – Stiggler

+0

*動的vbox-esを作成する *すべてのvboxにボタンがある *ボタンを押すと、vboxを表示または非表示にする関数(JSではなく)に移動する必要がある * vbox名のパラメータ、または、どのボタンが押されたのかわからない。 (なぜ私はMouseEvent.CLICK、function()を使って奇妙なことをするのですか?void {openEdit(formsArray [( "vb" + counter。toString())])、false 私はあなたが私を理解することを望む...私はちょっと失われています。 親切にして、Jaq –

関連する問題