如何从 swf 实例化类?
-
19-08-2019 - |
题
我有一个 FLA 文件,其中包含库中的对象,我将其设置为“类”(在 CS3 中,右键单击库中的项目选择属性,确保将其设置为导出为动作脚本,并且具有类名称)
对于本练习,我们将该类命名为“MyClass”
如果我将该 FLA 发布到 SWC 和 SWF:
我可以静态加载 SWC,并通过简单地执行以下操作来实例化“MyClass”:
var inst:MyClass = new MyClasS();
现在,问题是:我希望能够在运行时通过使用加载器对象加载 SWF 文件来完成此操作。
我了解如何在发布之前访问 FLA 中手动创建的实例,但我希望能够做的是创建“MyClass”类的新实例。
我可以获得代表 swf 文件的“MovieClip”,我可以将其添加到我的显示列表中,但我似乎无法获取其中包含的类。(我希望这是有道理的)
任何有关如何攻击此问题的建议将不胜感激。
编辑 :格式代码
解决方案
要完成基督教的回答:
var cls : Class = loader.contentLoaderInfo.applicationDomain.getDefinition("ClassName");
var instance : Object = new cls();
此外,值得一提的是,你不会得到强类型(即它必须声明为对象),除非类实现这也是在主应用程序定义的接口。然后,您就可以在实例变量声明为接口,并且具有编译时访问它的成员。
其他提示
看看这里;您应该能够使用 Loader.contentLoaderInfo.applicationDomain.getDefinition("MyClass") 提取类引用。
不隶属于 StackOverflow