4

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

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

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

但是,这给了我以下错误:

[故障] 异常,信息=ReferenceError:错误 #1065:未定义变量类名。

4

2 回答 2

6

我想出的最简单的方法是在项目中的任何地方简单地写出类名,用分号分隔。

例如,我在其中创建了一个 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/

于 2011-08-04T00:02:10.487 回答
1

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

-includes=com.mydomain.package.MyClass

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

于 2014-10-30T16:41:24.680 回答