在stage / root上获取一个显示对象?

时间:2011-01-28 16:44:44

标签: actionscript-3

如何从类中获取舞台/根目录上的显示对象?

文本字段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();

3 个答案:

答案 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将使您能够在启动时引用该阶段,允许您实例化该类并将其添加到舞台中(这就是事件应该首先触发的原因)。