在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();
答
不完全确定你在做什么,但最简单的方法是解析对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
将使您参考舞台火灾时允许的话,你已经被实例化该课程并将其添加到舞台上(这就是为什么该活动首先应该开火)。
您是通过时间轴还是文档类实现此代码? – Taurayi 2011-01-28 17:57:49
尝试调用getChildByName()将抛出编译器错误,因为classTest类没有该方法。 classTest需要继承Sprite或MovieClip类来继承getChildByName()。 – Taurayi 2011-01-28 21:36:47