出于某种原因,当试图从数组中拼接中间索引时,敌人会删除最后一个元素。我问了几个人,但他们不知道问题是什么。
如果我向第5个敌人射击子弹,则阵列的最后一个元素拼接而不是索引5.
enemies.forEach(function(element, index){
for(var i = 0; i < bullets.length; i++) {
if(bullets[i].X + 5 > element.X && bullets[i].X < element.X+30 &&
bullets[i].Y + 5 > element.Y && bullets[i].Y < element.Y+30){
//These conditions look messy but they work
console.log(index); //This Outputs the Correct Index
enemies.splice(index, 1); //<- Splices The Last Index instead of a specific one
bullets.splice(i, 1);
}
}
})
此链接包含我的整个代码的副本以及此功能的备用版本 https://pastebin.com/Q7swAh1a
答案 0 :(得分:0)
你的问题在这里:
$TV.Power.On()
#Outputs
Set-Power -action on -IPAddress 127.0.0.1 -auth AuthKey123
$TV.IPAddress = "10.0.0.1"
$TV.Power.On()
#Outputs
Set-Power -action on -IPAddress 10.0.0.1 -auth AuthKey123
在这里
for(var i = 0; i < enemies.length; i++) {
enemies[i].Draw((66*i)+18, 50, i);//Here is the bug
enemies[i].Move();
}
你根据阵列中的索引而不是自己的位置来绘制敌人。
这应该有效:
this.Draw = function(x, y, i) {
this.X = x;//These 2 lines overwrite the real positions
this.Y = y;
ctx.fillStyle = 'orange';
ctx.fillRect(this.X, this.Y, 30, 30);
ctx.fillStyle = 'white';
ctx.fillText(i, this.X, this.Y);
}