Actionscript 3 Actionscript3:如何从外部类访问舞台上的元素?
我在.as文件中有一个外部类,我的问题是我不能访问舞台上的元素。类似stage.txtfield.text或this.parent.txtfield.text的代码不起作用。txtfield是动态文本字段的instace名称。root和stage不再是全局的,因此如果希望在外部类中使用它们,则需要通过文档根类公开它们Actionscript 3 Actionscript3:如何从外部类访问舞台上的元素?,actionscript-3,Actionscript 3,我在.as文件中有一个外部类,我的问题是我不能访问舞台上的元素。类似stage.txtfield.text或this.parent.txtfield.text的代码不起作用。txtfield是动态文本字段的instace名称。root和stage不再是全局的,因此如果希望在外部类中使用它们,则需要通过文档根类公开它们 一些参考:它有点依赖于外部类 如果它扩展了DisplayObject(或DisplayObject的任何子对象),则只要将stage属性添加到显示列表中(即将其添加到stage或显
一些参考:它有点依赖于外部类 如果它扩展了DisplayObject(或DisplayObject的任何子对象),则只要将stage属性添加到显示列表中(即将其添加到stage或显示列表上的任何其他DisplayObjectContainer中),您就可以使用该属性进行访问 在外部类中使用以下代码来侦听该消息:
addEventListener(Event.ADDED_TO_STAGE, AddedToStage);
//...
private function AddedToStage(e:Event):void
{
trace("TextField text" + TextField(stage["textfield"]).text);
}
如果它不是一个displayObject,或者如果它不在显示列表中,最好的办法可能是在构造函数或单独的方法调用中为它提供需要访问的对象(如TextField)。
您可以给它一个stage-it-self的引用,但是如果您需要这个类来操作MovieClip中的TextField,那么这就不是很一般了
您可以使用以下代码引用文本字段:
//In any DisplayObject on the display list (could be inside a MovieClip or on the Stage itself)
var manipulator:MyClass = new MyClass(TextField(stage["textfield"]));
//In the external class
public class MyClass
{
publich function MyClass(txt:TextField)
{
trace("TextField text" + txt.text);
}
}
请注意,此代码不会检查textfield是否确实存在。您应该先检查一下,然后抛出一个正确的错误,以使调试更容易。我很少看到AS3的答案是圆而清晰的,先生,您击中了它的头部。如果该类以任何方式是一个DisplayObject,并且在显示列表上,它可以访问stage。如果您的类不是DisplayObject,请在构造函数中创建一个钩子,以传递对阶段的引用:)