我有一个字符串,在运行时,它包含我想要实例化的类的名称。我该怎么做?
我阅读了使用flash.utils.getDefinitionByName()
的建议:
var myClass:Class = getDefinitionByName("package.className") as Class;
var myInstance:* = new myClass();
然而,这给了我以下错误:
[Fault] exception,information = ReferenceError:错误#1065:未定义变量className。
答案 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