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

问题描述:

我怎样才能从舞台/根类从一个显示对象?在stage/root上获取显示对象?

文本字段txt在根目录下,但我怎样才能从一个类中获得它?

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

您是通过时间轴还是文档类实现此代码? – Taurayi 2011-01-28 17:57:49

+0

尝试调用getChildByName()将抛出编译器错误,因为classTest类没有该方法。 classTest需要继承Sprite或MovieClip类来继承getChildByName()。 – Taurayi 2011-01-28 21:36:47

不完全确定你在做什么,但最简单的方法是解析对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 

不知道我是否理解你是正确的。 但是,如果你添加一个名称到您的显示对象,您可以尝试下一个代码

txt.name = "txt_1"; 
this.getChildByName("txt_1"); 

UPDATE

最好不要做这样的。最好是使用事件的类之间进行通信,但无论如何:

​​3210

(在一个新的类文件)

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将使您参考舞台火灾时允许的话,你已经被实例化该课程并将其添加到舞台上(这就是为什么该活动首先应该开火)。