在AS3中,我如何在电影开始时运行代码



我正在为我的游戏制作关卡编辑器,并希望能够访问游戏中包含的所有类别的列表。我在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作为编译器设置(在这种情况下,我想知道你的静态初始化器是否被调用?)。

相关内容

最新更新