我正在为我的游戏制作关卡编辑器,并且希望能够访问我游戏中包含的所有课程的列表。我的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的
答案 0 :(得分:0)
列出ApplicationDomain中的所有类定义,并根据命名约定或类型(接口?)过滤它们。
要实现此目的,您可以使用ApplicationDomain.getQualifiedDefinitionNames()
(docs),但前提是您定位FlashPlayer 11.3 +。
作为旁注,你必须在某个地方引用这个类,作为一个类字段,所以编译器知道它必须在SWF中包含这个类。您还可以将要引用的类放在SWC库中,并使用-compiler.include-libraries
作为编译器设置(在这种情况下,我想知道您的静态初始化程序是否被调用?)。