我有一个字符串,它在运行时包含我要实例化的类的名称。我该怎么做?
我阅读了使用建议flash.utils.getDefinitionByName()
:
var myClass:Class = getDefinitionByName("package.className") as Class;
var myInstance:* = new myClass();
但是,这给了我以下错误:
[故障] 异常,信息=ReferenceError:错误 #1065:未定义变量类名。
我有一个字符串,它在运行时包含我要实例化的类的名称。我该怎么做?
我阅读了使用建议flash.utils.getDefinitionByName()
:
var myClass:Class = getDefinitionByName("package.className") as Class;
var myInstance:* = new myClass();
但是,这给了我以下错误:
[故障] 异常,信息=ReferenceError:错误 #1065:未定义变量类名。
我想出的最简单的方法是在项目中的任何地方简单地写出类名,用分号分隔。
例如,我在其中创建了一个 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/
另一种选择是使用 mxmlc -includes 编译器参数,如下所示:
-includes=com.mydomain.package.MyClass
http://blogs.adobe.com/cantrell/archives/2010/09/loading-classes-dynamically-in-actionscript-3.html