我尝试从外部类更改舞台上的文本字段,但它不起作用。 这是我尝试的代码:
package
{
import flash.display.*;
import flash.text.TextField;
public class Exp extends Sprite
{
public function Exp()
{
trace(stage.getChildByName("abc"));
TextField(stage.getChildByName("abc")).text = "abc";
}
}
}
在我的舞台上,我得到了一个动态的文本字段,名称为:“abc”。 但是每当我启动程序时,flash告诉我stage.getChildByName(“abc”)将是一个空对象。
我希望有人可以帮助我。
答案 0 :(得分:1)
我以前从未使用过getChildyName ..你可以使用它:
var rt:MovieClip = MovieClip(root);
trace(rt["abc"]);
或更短:
trace(MovieClip(root)["abc"]);
如果您的示例是您的文档类 -
package
{
import flash.display.MovieClip;
import flash.text.TextField;
public class Exp extends MovieClip
{
public function Exp()
{
var r:MovieClip = MovieClip(root);
TextField(r["abc"]).text = "abc";
}
}
}
答案 1 :(得分:0)
我知道这个问题已经接受了答案,但我认为这是一个更好的答案:
package
{
import flash.display.Sprite;
import flash.events.Event;
import flash.text.TextField;
public class Main extends Sprite
{
private var _textField:TextField;
public function Main():void
{
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}// end function
private function init(e:Event = null):void
{
removeEventListener(Event.ADDED_TO_STAGE, init);
var textField:TextField = new TextField();
textField.name = "abc";
stage.addChild(textField);
_textField = TextField(stage.getChildByName("abc"));
trace(_textField.name); // output: abc
}// end function
}// end class
}// end package