我正在为我的游戏制作关卡编辑器,并希望能够访问游戏中包含的所有类别的列表。我在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文件。
谢谢,
巴尔加
列出ApplicationDomain中的所有类定义,并根据命名约定或类型(接口?)对它们进行筛选。
要实现这一点,您可以使用ApplicationDomain.getQualifiedDefinitionNames()
(docs),但仅当您的目标是FlashPlayer 11.3+时。
作为旁注,你必须在某个地方引用这个类,作为一个类字段,这样编译器就知道它必须在SWF中包含这个类。你也可以把你想要引用的类放在SWC库中,并使用-compiler.include-libraries
作为编译器设置(在这种情况下,我想知道你的静态初始化器是否被调用?)。