gpt4 book ai didi

actionscript-3 - 是否可以在 Action Script 3 中动态创建用户定义类的实例?

转载 作者:行者123 更新时间:2023-12-02 06:43:17 25 4
gpt4 key购买 nike

我有一个工厂,其中 Action Script 遵循 xml 并从中构建 DisplayObject 层次结构。这意味着脚本事先不知道它会在 xml 中遇到什么元素,因此不知道它需要什么用户定义的工厂类。

我知道可以这样做:

var rect:*, className:String = "flash.geom.Rectangle";

if (ApplicationDomain.currentDomain.hasDefinition(className)) {
rect = new(getDefinitionByName(className));
}

Rectangle 实例将被实例化。但是一旦我将 flash.geom.Rectangle 替换为用户定义的东西,比如 my.factory.Block 它就会停止工作,如果我注释掉条件,我会变得简单: “ undefined variable block ”错误。

明显的解决方法是在激活工厂之前创建 my.factory.Block(和所有其他组件)的实例,但这有点破坏了动态组件工厂的全部意义。

当然,我在脚本顶部有:import my.factory.*; 语句。

有没有更聪明的解决方案?

最佳答案

正如其他人所指出的,问题很可能是类未包含在已编译的 swf 中。正如丹尼尔指出的那样,导入是不够的,您需要引用该类。但是,您不需要像 Cay 所说的那样声明一个变量,您只需按照以下步骤操作即可:

我的类(class);

尽管如此,如果您使用 mxmlc 进行编译,您可以使用 -includes 选项指定一个或多个类,您希望强制将其包含在已编译的 swf 中。这样做的好处是它不需要您在代码中有一个引用。它看起来像这样:

-包括 com.example.MyClass com.example.MyOtherClass

如果您有一个非常大的类包要包含,但不想为每个类写出类名,您可以将包编译为 swc,使用 compc,并使用 - mxmlc 的 include-libraries 选项包含整个包。

关于actionscript-3 - 是否可以在 Action Script 3 中动态创建用户定义类的实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4670466/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com