如何从swf实例化类?

时间:2009-01-22 00:20:33

标签: flex flash actionscript-3 loader

我有一个包含库中对象的FLA文件,我将其设置为“类”(在CS3中,右键单击库中的项目选择属性,确保将其设置为导出为动作脚本,并且具有班级名称)

在本练习中,我们称之为“MyClass”类

如果我将FLA发布到SWC和SWF:

我可以静态加载SWC,只需执行以下操作即可实例化“MyClass”:

var inst:MyClass = new MyClasS();

现在,问题是:我希望能够通过使用加载器对象加载SWF文件在运行时执行此操作。

我了解如何访问在发布之前在FLA中手动创建的实例,但我希望能够做的是创建“MyClass”类的新实例。

我可以得到一个代表swf文件的“MovieClip”,我可以将它添加到我的displaylist中,但我似乎无法获得其中包含的类。 (我希望这是有道理的)

非常感谢任何有关如何攻击此事的建议。

编辑:格式代码

2 个答案:

答案 0 :(得分:3)

完成克里斯蒂安的回答:

var cls : Class = loader.contentLoaderInfo.applicationDomain.getDefinition("ClassName");

var instance : Object = new cls();

此外,值得注意的是,您不会得到强类型(即必须声明为Object),除非该类实现了在主应用程序中定义的接口。然后,您将能够将实例变量声明为接口,并具有对其成员的编译时访问权。

答案 1 :(得分:2)

Have a look here;您应该能够使用Loader.contentLoaderInfo.applicationDomain.getDefinition(“MyClass”)提取类引用。