访问AS3中的Document类

时间:2008-12-16 00:59:15

标签: flash actionscript-3 oop class document-class

实例化类如何访问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();
   }
}

3 个答案:

答案 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)

只是旁注,但这个问题的最短答案是:任何类访问任何其他类的方式相同。也就是说,无论是直接参考还是静态曝光。在这方面,文档类与任何其他类没有什么不同。