如何从类中获取舞台/根目录上的显示对象?
文本字段txt是root,但是如何从类中获取它?
var txt = new TextField();
with(txt){
type = TextFieldType.INPUT;
border = true;
textColor = 0xffffff;
multiline = true;
x = 20;
y = 20;
width = 270;
height = 40;
}
addChild(txt);
txt.name = 'test';
class classTest {
public function classTest{
trace(this.getChildByName('test'));
}
}
var cls = new classTest();
答案 0 :(得分:1)
不完全确定你在做什么,但最简单的方法是解析对root或包含Textfield对象的DisplayObject对象的引用,然后通过ClassTest类中的引用访问TextField对象。
var txt:TextField = new TextField();
with(txt)
{
type = TextFieldType.INPUT;
border = true;
textColor = 0xffffff;
multiline = true;
x = 20;
y = 20;
width = 270;
height = 40;
}
addChild(txt);
txt.name = 'test';
class ClassTest
{
public function ClassTest(p_target:DisplayObjectContainer)
{
trace(p_target.getChildByName("test"));
} // end function
}// end function
var classText:ClassText = new ClassTest(this); // parse a reference to root
答案 1 :(得分:0)
不确定我是否理解你是对的。 但是,如果您为显示对象添加名称,则可以尝试下一个代码
txt.name = "txt_1";
this.getChildByName("txt_1");
<强>更新强>
最好不要这样做。最好使用事件在类之间进行通信,但无论如何:
class classTest {
private var _r : MovieClip; //not sure about the type
public function classTest(r:MovieClip){
_r = r;
trace(_r.getChildByName('test'));
}
}
var cls = new classTest(this);
答案 2 :(得分:0)
(在新的类文件中)
import flash.display.Sprite;
import flash.events.Event;
public class classTest extends Sprite
{
public function classTest
{
addEventListener(Event.ADDED_TO_STAGE, added, false, 0, true);
}
private function added(evt:Event):void
{
trace(stage.getChildByName("test"));
}
}
Event.ADDED_TO_STAGE
将使您能够在启动时引用该阶段,允许您实例化该类并将其添加到舞台中(这就是事件应该首先触发的原因)。