【发布时间】:2016-03-14 03:10:23
【问题描述】:
所以我在 AS3 中创建了一个僵尸游戏,并创建了一组僵尸精灵。每次开始新的波浪时,它都会根据波浪级别创建一定数量的僵尸精灵。这是创建僵尸精灵的函数。
public function spawnZombies(amount:int):void {
for (var spawned:int = 0; spawned < amount; spawned++) {
Stats.zombieAmount += 1;
zombies.push(new CreateZombie("zombie.png", Math.random()*-(Stats.level * 150), gameHeight - 45));
addChild(zombies[zombies.length - 1].spriteObj);
zombies[zombies.length - 1].spriteObj.addEventListener(MouseEvent.CLICK, function killed(evt:MouseEvent):void {
Stats.zombieAmount -= 1;
Stats.money += 1;
moneyText.displayText.text = "$" + Stats.money;
trace(zombies.indexOf(evt.currentTarget));
removeChild(evt.currentTarget as Sprite);
zombies[zombies.indexOf(evt.currentTarget as Sprite)] = null;
});
}
}
现在这一切都很好,但我遇到了eventListiner 的问题,我要添加到我创建的每个精灵中。问题出在这几行代码中:
trace(zombies.indexOf(evt.currentTarget)); //Returns -1
removeChild(evt.currentTarget as Sprite); //Works fine
zombies[zombies.indexOf(evt.currentTarget as Sprite)] = null; //Sets -1 in list to null, not what I want!
问题在于使用目标查找精灵的索引,它似乎永远找不到它,并且总是返回-1;如果有人有任何想法,请帮忙!
【问题讨论】:
-
您的内联鼠标单击处理程序将导致内存泄漏。每个生成的僵尸都会因此而留在内存中。
-
迭代,我不确定我该如何解决这个问题。
标签: actionscript-3 flash