我现在已经解决了这个问题,但更想知道是否有正确的方法来做到这一点。我有一个生成 MovieClip 的函数,它们是地图的拼贴,然后我将其附加到舞台上。它根据字符串变量确定要使用的瓷砖类别,如下所示:
// symbolID holds our class name, determined by logic above
var newClass:Class = getDefinitionByName(symbolID) as Class;
var newtile:MovieClip = new newClass();
这有效,但前提是该类的实例已经存在于代码中的其他地方。它可以在任何地方——在文档类中,在辅助类的某些隐藏函数中,这似乎无关紧要。如果没有,Flashdevelop 会抛出错误 1065,“未定义变量(变量)”。我提到我正在使用 Flashdevelop,因为它看起来可能是特定于编译器的,但我不确定。
我的 hack 修复是这样做的:
var a:baseTile;
a as anotherTile;
a as aThirdTile;
等等,这是可行的,但如果我最终要拥有数百个这样的瓦片类,那肯定不是理想的。
编辑:我应该补充一点,这些影片剪辑来自一个来自 Flash Professional 的 .swc 文件。