在ActionScript 3中从字符串实例化一个类

时间:2011-08-03 22:38:44

标签: actionscript-3 class dynamic-class

我有一个字符串,在运行时,它包含我想要实例化的类的名称。我该怎么做?

我阅读了使用flash.utils.getDefinitionByName()的建议:

var myClass:Class = getDefinitionByName("package.className") as Class;
var myInstance:* = new myClass();

然而,这给了我以下错误:

  

[Fault] exception,information = ReferenceError:错误#1065:未定义变量className。

2 个答案:

答案 0 :(得分:6)

我提出的最简单的方法是在项目的任何地方简单地用分号编写类名。

e.g。我用它创建了一个Assets.as文件:

package {   

public class Assets {       

    // To avoid errors from the compiler when calling getDefinitionByName
    // just list all of the classes that are not otherwise referenced in code:
    Balloon;
    Cloud;
    FlyingHorse;
    FlyingPig;
    UFO;
    Zeppelin;       
}
}

完整的代码示例/教程就在这里:http://producerism.com/blog/flashpunk-dame-and-lua-tutorial-part-6/

答案 1 :(得分:1)

另一种选择是使用mxmlc -includes编译器参数,如下所示:

-includes=com.mydomain.package.MyClass

http://blogs.adobe.com/cantrell/archives/2010/09/loading-classes-dynamically-in-actionscript-3.html