2011-10-18 6 views
0

同じSWF上で同じカスタムコンポーネントのインスタンスを複数使用しています。このコンポーネントは、本質的に特別なサイジング要件を持つテキストフィールドです。私はまた、テキストフィールドのコンポーネントからの情報を扱う別の "ラッパー"コンポーネントを持っています。私は当初ステージインデックスを使用して、それが来たテキストフィールドコンポーネントにデータを関連付けることを計画していました。これは私の予想以上に複雑になった。 ラッパーからトレースすると、テキストフィールドコンポーネントのインデックスを取得できません。だから私はコンポーネントコードでそれを取得し、カスタムイベントを介してラッパーに情報を送った。そこに問題があるのは、どのコンポーネントが同じであるかを知ることができないからです。私はコンポーネントシムとテキストフィールドも見ることができます。私は、表示リストでプログラムコンポーネントがどのように機能するのか本当に混乱しています。複数のカスタムコンポーネントと表示リスト

私の主な質問。適切なコンポーネントと情報を関連付けるためのより良い方法はありますか? 私はそれが私の唯一の質問だと思います。正しい方向に私を指差してください。

EDIT:ステージにドラッグする必要があることを追加することを忘れました。回答をいただきありがとうございますが、プログラムでコンポーネントを追加する場合にのみ有効です。どんな助けでも大歓迎です。たとえそれがソート可能な解決策や情報へのリンクであったとしても、それを並べ替えるのに役立ちます。再度、感謝します。

EDIT2:私は矩形を描画するだけのダミーのプレースホルダコンポーネントを作成し、実行時にそれをプログラムで生成されたテキストフィールドコンポーネントで置き換えました。だからこそ、このソリューションへの道に私を助けてくれた皆様に感謝します。私が何か良いものを考え出すなら、これを更新します。

答えて

1

あなたはそうのように、各テキストフィールドに一意の名前を与えることができる:

for(var i:int = 0; i < n; i++) 
{ 
    var txt:TextField = new MyCustomTextField(); 
    txt.name = "txt_" + i.toString(); 
    stage.addChild(txt); 
} 

どこ例えばtxt[99] = stage.getChildByName("txt_" + 99)

...または配列またはベクトルを使用して各TextFieldへの参照を保持することができます。

+0

テキストフィールドは実際にはコンポーネントです。あなたのアプローチはうまくいかないが、試してみてくれてありがとう。 – James

+0

@Jamesこのアプローチは、コンポーネントでも動作します。コンポーネントによって、 'fl.controls'パッケージからコントロールを参照すると仮定します。 – Taurayi

+0

@jamesこれはあなたが望むもので、動作しないとは思わない。 –

関連する問題