1

我有 3 个movieclips,每个都有一个小时候的文本框。

我将活动设置为

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 作为标签,然后您可以像这样设置它的文本:

activeText.text += 'hello';

现在,您可以重用您编写的新类来制作各种外观不同的标签,只要每个标签都包含一个名为 tf.

于 2012-10-15T19:09:55.557 回答