如何从swf文件中实例化类?

3

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

对于这个练习,我们称这个类为“MyClass”

如果我将该FLA发布为SWC和SWF:

我可以静态加载SWC,并通过简单地执行以下操作来实例化“MyClass”:

var inst:MyClass = new MyClasS();

现在,问题来了:我希望能够在运行时使用加载器对象加载SWF文件来实现这一点。
我知道如何访问在FLA中手动创建并发布的实例,但我想要做的是创建“MyClass”类的新实例。
我可以获得表示swf文件的“MovieClip”,将其添加到我的显示列表中,但似乎无法访问其中包含的类。(我希望这样说起来有意义)
如何解决这个问题,任何建议都将不胜感激。
编辑:格式化代码
2个回答

3
为了补充Christian的回答:
var cls : Class = loader.contentLoaderInfo.applicationDomain.getDefinition("ClassName");

var instance : Object = new cls();

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

如果已知该类扩展了某个类,比如 DisplayObject,那么 instance 变量也可以是 DisplayObject 类型,从而节省类型转换和动态属性解析的开销。当然,如果不知道具体类型,就使用 Object - Vesper

2

请查看这里,你可以使用Loader.contentLoaderInfo.applicationDomain.getDefinition("MyClass")获取类引用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接