实例化类如何访问Document类?
即使我使用Flash中的属性栏命名Document类,尝试从其他类访问它通常也会失败,说“尝试访问未定义的属性...
一个解决方案总是将Document类强制转换为自身!例如
Main(Main).globalMethod();
但有时甚至这个恒星失败了,然后通常没有出路,除了显而易见的!
class Other{
var parentClass:Main;
public function Other(parent:Main){
parentClass = parent; // pointer to the Main class in a local var!
Main(parentClass).globalMethod();
}
}
答案 0 :(得分:22)
您可以在文档类中使用单例(Main
,在您的示例中),这样您就可以从任何地方访问该实例。
public class Main extends Sprite {
private static var _instance:Main;
public static function get instance():Main { return _instance; }
public function Main() {
_instance = this;
// etc...
}
// etc...
}
然后您可以像这样访问Main
实例:
public class Other {
public function Other() {
Main.instance.usefulInstanceMethod();
}
}
文档类非常适合单例模式,因为通常应该只有实例可用。
答案 1 :(得分:4)
文档类本身不是全局可访问的对象。如果要调用文档类中的方法,则必须始终将Main中的引用传递给要调用其方法的任何其他类/对象。更面向对象的方法是从您的其他类(其他)调度事件,以便Main类监听并调用适当的方法。
如果您不关心保持良好的OOP结构并想要从已添加到显示列表的显示对象访问文档类,您可以尝试类似:stage.getChildAt( 0 );
答案 2 :(得分:4)
只是旁注,但这个问题的最短答案是:任何类访问任何其他类的方式相同。也就是说,无论是直接参考还是静态曝光。在这方面,文档类与任何其他类没有什么不同。