【发布时间】:2016-01-03 06:21:22
【问题描述】:
我正在制作一个游戏,如果玩家从顶部击中敌人,在 1 秒后(即显示死亡动画),敌人将拼接出阵列。
一个一个地杀死一个敌人时效果很好,但是当两个敌人同时被杀死时,就会出现问题。
例如,如果敌人在被击杀时位于阵列的 2 号和 3 号位置。拼接后,位置3就到了位置2。
第二个接头不起作用,因为位置已经改变。
是否有对此或其他方法的修复,或者我的逻辑完全无效。
for (var i = 0; i < enemies.length; i++) {
var collWithPlayer= that.collisionCheck(enemies[i], player);
if (collWithPlayer == 't') { //kill enemies if collision is from top
enemies[i].state = 'dead';
player.velY = -((player.speed));
score.totalScore += 1000;
score.updateTotalScore();
//immediately-invoked function for retaining which enemy died
(function(i){
setTimeout(function() { //show squashed enemy for a brief moment then splice
enemies.splice(i, 1);
}, 1000);
})(i);
【问题讨论】:
-
IMO 您不应该为此使用 setTimeout。我无法判断这是否是您正在做的基于浏览器/DOM 的事情,但如果是这样,我建议您通过 css 使用过渡效果,这样您就不会仅仅为了效果而延迟 javascripts 处理。这将使您的数组准确,您将不需要这个猴子补丁
标签: javascript arrays iife