actionscript-3 - Actionscript 3 getDefinitionByName 看不到类

标签 actionscript-3 flashdevelop

我现在已经通过 hack 解决了这个问题,但更想知道是否有正确的方法来做到这一点。我有一个生成 MovieClip 的函数,它是 map 的图 block ,然后我将其附加到舞台上。它根据字符串变量确定要使用的图 block 类别,如下所示:

// symbolID holds our class name, determined by logic above
var newClass:Class = getDefinitionByName(symbolID) as Class;
var newtile:MovieClip = new newClass();

这有效,但如果该类的实例已存在于代码中的其他位置。它可以在任何地方——在文档类中,在辅助类的某些隐藏函数中,这似乎并不重要。如果没有,Flashdevelop 会抛出错误 1065,“变量(变量)未定义”。我提到我正在使用 Flashdevelop,因为它看起来可能是特定于编译器的,但我不确定。

我的黑客修复是这样做:

var a:baseTile;
a as anotherTile;
a as aThirdTile;

等等,这可行,但如果我最终要拥有数百个这样的图 block 类,那么绝对不理想。

编辑:我应该补充一点,这些影片剪辑来自 .swc 文件,该文件来自 Flash Professional。

最佳答案

你必须使用“黑客”。

getDefinitionByName() 只能使用运行时存在的类。不幸的是,如果您不使用类,它将不会被编译并且在运行时不会存在。

图书馆符号使解决这个问题变得更容易。如果您选中在给定帧自动提供它们的复选框,您只需确保您的 getDefinitionByName() 调用在该帧期间或之后完成。

enter image description here

关于actionscript-3 - Actionscript 3 getDefinitionByName 看不到类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16764746/

相关文章:

android - 在 Android 设备上启动应用程序时出现黑屏

flash - 混合 AS2 和 AS3 时出现问题

actionscript-3 - Flash CS5 Actionscript 3.0 转到下一帧并播放代码

actionscript-3 - AS3如何仅在x轴上开始拖动?

actionscript-3 - ActionScript/Flex 是否有一个聪明的空指针检查器实用程序类?

apache-flex - 直接在 flex 移动设备上发送电子邮件

flash - 检查值是否为数字

android - ActionScript 3 FlashDevelop 和 Air 应用程序发布 - xml list 设置/包问题

actionscript-3 - 为使用 SWC 的项目生成 ASDoc

actionscript-3 - Trace() 方法在 FlashDevelop 中不起作用