在AS3中,如何在电影启动时运行代码?

时间:2013-04-19 21:20:49

标签: actionscript-3 class static initialization initializer

我正在为我的游戏制作关卡编辑器,并且希望能够访问我游戏中包含的所有课程的列表。我的Main类中有一个静态函数:

public static function register(c:Class, category:String):void {
    if (classRegister[category] == null) {
        classRegister[category] = new Array();
    }           
    classRegister[category].push(c);        
}

然后,在我想要注册的每个类中,我放了一个静态初始化器:

{           
    Main.register(prototype.constructor, "motion");     
}

但是,只有在首次使用类时才会调用静态初始值设定项。有没有办法让一个类在游戏开始时强制使用它?我知道我可以在Main文件中明确列出所有已注册的类,但这是次优的,因为只要添加了想要注册的新类,就必须编辑Main文件。

谢谢,

Varga的

1 个答案:

答案 0 :(得分:0)

列出ApplicationDomain中的所有类定义,并根据命名约定或类型(接口?)过滤它们。

要实现此目的,您可以使用ApplicationDomain.getQualifiedDefinitionNames()docs),但前提是您定位FlashPlayer 11.3 +。

作为旁注,你必须在某个地方引用这个类,作为一个类字段,所以编译器知道它必须在SWF中包含这个类。您还可以将要引用的类放在SWC库中,并使用-compiler.include-libraries作为编译器设置(在这种情况下,我想知道您的静态初始化程序是否被调用?)。