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

Actionscript 3 从ActionScript 3中的字符串实例化一个类,actionscript-3,class,dynamic-class,Actionscript 3,Class,Dynamic Class,我有一个字符串,在运行时,它包含我要实例化的类的名称。我该怎么做 我阅读了使用flash.utils.getDefinitionByName()的建议。: 但是,这给了我以下错误: [Fault]异常,信息=ReferenceError:Error#1065:未定义变量类名 我想到的最简单的方法就是在项目中的任何地方简单地写出类名,用分号分隔 e、 g.我创建一个Assets.as文件,其中包含以下内容: package { public class Assets {

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

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

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

[Fault]异常,信息=ReferenceError:Error#1065:未定义变量类名


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

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;       
}
}

关于这方面的完整代码示例/教程如下:

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

-includes=com.mydomain.package.MyClass

您的类仍然需要在其他地方定义,以便Flash获得定义,因为它所做的只是检查当前的应用程序域。这是我以前一直在挣扎和放弃的事情。谢谢!这就解决了问题。我认为导入类就足够了——如果编译器发现导入的类没有必要,那么导入的类是否真的没有被导入?正确——仅仅因为导入了类,并不意味着它在发布时就被编译了。Flash检查每个类的使用情况,只编译它在实际代码中找到的类。这就是为什么您可以导入flash.display.*而不影响您的文件大小。我要补充的是,这似乎只适用于flash Builder。
-includes=com.mydomain.package.MyClass