- ベストアンサー
Flashムービー実行中にクラスのプロパティを取得する方法
- AS3 / Flash Professional CS5を使用しています。クラスのプロパティ一覧を列挙して、その値を取得する方法で悩んでいます。
- 具体的には、Flashムービー実行中にFlash CS5でリンケージされたクラスをnewしてインスタンスを作り、その中にあるTextFieldを根こそぎ列挙し、その中身の値を読み出したいです。
- ただし、外部ライブラリは使用できず、mx.utils.ObjectUtil.getClassInfo()も使用できません。困っています。ご教示お願いします。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
クラス というのは MovieClip を継承するクラス(ライブラリの中にシンボルとしてあるもの)のことでしょうか? またもしそうであれば new で呼び出した時点で,それはクラスではなく単なるインスタンスになると思うのですが。。。 > 2.1のインスタンスを渡すと中にある > TextFieldを根こそぎ列挙して、 > その中身の値を読みだす これに関してのみについて回答します。 (それ以外はよくわかりません。) 例えば ステージ上に3つのダイナミックテキストフィールドを用意するとしますよね。 そのうちの1つは無名にしておいて 後の2つには txt0 と txt1 というインスタンス名を付けるとします。 そして 無名のダイナミックテキストフィールドには 「あいう」と手入力しておいたとします。 txt0 には「123」と手入力しておいたとします。 txt1 には空(カラ)にしておいたとします。 その後適当に ステージ上にムービークリップやボタンなどをいくつか用意してみます。 その3つのテキストフィールドと いくつか用意した何かをまとめて選択し ムービークリップに変換します(シンボル名は適当)。 そしてライブラリの中の今作成したムービークリップを選択して プロパティのリンケージより「TextMC」というクラス名を付けるとします。 ※【添付図】↓ 上で作成したステージ上のムービークリップは不要なので削除します。 この状態で 例えばメインタイムラインのフレーム1に次のように書けば 一応はムービークリップ(インスタンス)内の テキストフィールドのみのプロパティが取得できますよ。 //======================================= var my_mc:TextMC = new TextMC(); //my_mc 内の表示オブジェクトを走査 for (var i:int = 0; i<my_mc.numChildren; i++) { //走査によって発見した表示オブジェクトを変数化 var prop = my_mc.getChildAt(i); // //もしその表示オブジェクトが TextField であれば if (String(prop) == "[object TextField]") { trace("発見したものは?…" + prop); trace("そのインスタンス名は?…" + prop.name); trace("その text は?…" + prop.text); trace("---------------------"); } } //(↓これはあってもなくても良いです) addChild(my_mc); //=======================================
お礼
おお!その手がありましたか! なんかいけそうな気がします。 早速試してみます。 ありがとうございます!