AS3:动态访问库对象

时间:2012-03-16 09:50:11

标签: actionscript-3

希望这应该是一个快速的问题。我无法使用数组动态访问库中的某些影片剪辑。

基本上,我的数组中有一堆字母..

var monarray:Array =("AAACBCBCAABBC").split("");

现在,我的图书馆拥有三个电影剪辑。它们具有以下AS3链接: 龟背竹 monsterB monsterC

我想要做的是根据我在数组中的位置创建一个对象的新实例。例如,当monarray在index [0]时,我想要添加monsterA ..

这是我用来尝试实现此效果的代码:

var b = new monster[monarray[i]];
b.x = mouseX;
b.y = mouseY;
addChild(b);
i ++;

然而,在编译我的.swf时,我收到此错误:

Scene 1, Layer 'Layer 1', Frame 1, Line 9   1086: Syntax error: expecting semicolon before leftbracket.

我理解这是因为我显然做得不对,但我只使用数组来调用特定索引的实例。

如果这是noobish,我很抱歉,但我不太确定如何在移动中动态选择这三个库实例!

提前多多感谢!

哈利。

2 个答案:

答案 0 :(得分:1)

即使上面的答案在定义上是正确的,但它仍然是实现你想要做的事情的“hacky”方式。我不建议您使用上述方法,除非您想要一种方法来动态添加新类型的怪物。让我试着解释一下。

如果要在运行时插入新的怪物类型,请使用上述方法。

你有你的base.swf加载一个external.swf(其中包含你提到的怪物的定义!)。 base.swf已经部署,你不想对它进行更改,那么上面的方法已经足够了。

假设您已经知道将在运行时部署的不同类型的怪物(在大多数游戏中就是这种情况!)我建议您创建一个工厂类,使用inhertitance(创建一个IMonster接口!并且工厂类可以将你的A,B,C等作为输入来挑出新的怪物。

答案 1 :(得分:0)

不确定尝试:

var mst = getDefinitionByName("monster"+monarray[i]) as Class;
var b = new mst;
相关问题