2009-01-22 67 views
3

我有一个FLA文件,其中包含库中的对象,我已将其设置为“类”(在CS3中,右键单击库中的某个项目选择属性,确保它设置为导出actionscript并具有类名称)如何从swf实例化类?

在这个练习中,我们称之为类“MyClass的”

如果我发布FLA到SWC和SWF:

我可以静态加载SWC,并实例“MyClass的”通过简单地做:

var inst:MyClass = new MyClasS();

现在,问题:我希望能够在运行时通过使用加载器对象加载SWF文件来做到这一点。

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

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

任何建议如何攻击这将不胜感激。

回答

3

要完成基督教的回答:

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

var instance : Object = new cls(); 

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

+0

如果已知某个类扩展了某个类,例如`DisplayObject`,`instance` var也可以是`DisplayObject`类型,从而节省了类型转换和动态属性解析。当然,如果这不知道,“对象”是要走的路。 – Vesper 2014-02-06 10:12:09

2

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