1

私は3つのムービークリップを持っており、それぞれに子としてテキストボックスがあります。

アクティブなものを設定します

var myroot:MovieClip = this.root as MovieClip;
var activeText:MovieClip;

これは動作します

function keyClicked (e:MouseEvent) {
    myroot.firstname_mc.getChildAt(0).text += "hello";
}

これはしません

function keyClicked (e:MouseEvent) {
    activeText.getChildAt(0).text += "hello";
}

これを動的に機能させるにはどうすればよいですか?

4

1 に答える 1

2

あなたの全体的な問題は、あなたがしてはいけないことをやろうとしているということです。代わりにすべきことは、目的の動作をカプセル化するクラスを作成し、それらに詳細を処理させることです。例えば:

package view {
   public class Label extends MovieClip {
      /* This is public so the Flash Player can
         populate it, not so you can "talk" to it
         from outside. This is a stage instance
      */
      public var tf:TextField;
      protected var _text:String;
      public function get text():String {
         return _text;
      }
      public var set text(value:String):void {
         if (value != _text) {
           _text = value;
           tf.text = _text;
         }
      }
   }

}

ここで、メインのドキュメントクラスで、activeTextをLabelと入力すると、次のようにテキストを設定できます。

activeText.text += 'hello';

また、作成した新しいクラスを再利用して、それぞれにtfというTextFieldが含まれている限り、さまざまな外観のラベルを作成できます。

于 2012-10-15T19:09:55.557 に答える