删除选中前数组中的所有元素
All elements in array before selected being deleted
可能只是一些愚蠢的东西,但我正在 p5.js 重写 Galaga 用于大学作业,并且在开始时我正在消灭敌人。当一颗子弹发射并击中屏幕上的第三个敌人时,它之前的所有敌人都会被摧毁。
敌人数组只是一个简单的数组,敌人对象被推入其中:enemies = [];
敌人的销毁函数是
this.die = function() {
enemies.splice(enemies[this.index], 1);
}
循环是
for( var b = 0; b < player.bullets.length; b++) {
for(var i = 0; i < enemies.length; i++) {
var bullet = player.bullets[b];
if(collision(bullet.x, enemies[i].x, bullet.y, enemies[i].y, 20, 55, 40, 55)) {
enemies[i].die();
}
}
}
任何帮助都会很棒
splice
的参数是删除top的起始索引(第一个元素)和元素个数。
所以声明
enemies.splice(enemies[this.index], 1);
似乎完全不正确。可能是声明
enemies.splice(this.index, 1);
会做你想做的,如果 this.index
是数组中敌人的索引。但如果你从数组中删除了一个先前安排的敌人,情况就不会这样了。
我建议做 enemies.splice(i, 1);
而不是 enemies[i].die();
:
for( var b = 0; b < player.bullets.length; b++) {
for(var i = 0; i < enemies.length; i++) {
var bullet = player.bullets[b];
if(collision(bullet.x, enemies[i].x, bullet.y, enemies[i].y, 20, 55, 40, 55)) {
enemies.splice(i, 1);
}
}
}
注意,从列表中删除一个元素后,必须更新以下元素的属性 .index
。
可能只是一些愚蠢的东西,但我正在 p5.js 重写 Galaga 用于大学作业,并且在开始时我正在消灭敌人。当一颗子弹发射并击中屏幕上的第三个敌人时,它之前的所有敌人都会被摧毁。
敌人数组只是一个简单的数组,敌人对象被推入其中:enemies = [];
敌人的销毁函数是
this.die = function() {
enemies.splice(enemies[this.index], 1);
}
循环是
for( var b = 0; b < player.bullets.length; b++) {
for(var i = 0; i < enemies.length; i++) {
var bullet = player.bullets[b];
if(collision(bullet.x, enemies[i].x, bullet.y, enemies[i].y, 20, 55, 40, 55)) {
enemies[i].die();
}
}
}
任何帮助都会很棒
splice
的参数是删除top的起始索引(第一个元素)和元素个数。
所以声明
enemies.splice(enemies[this.index], 1);
似乎完全不正确。可能是声明
enemies.splice(this.index, 1);
会做你想做的,如果 this.index
是数组中敌人的索引。但如果你从数组中删除了一个先前安排的敌人,情况就不会这样了。
我建议做 enemies.splice(i, 1);
而不是 enemies[i].die();
:
for( var b = 0; b < player.bullets.length; b++) {
for(var i = 0; i < enemies.length; i++) {
var bullet = player.bullets[b];
if(collision(bullet.x, enemies[i].x, bullet.y, enemies[i].y, 20, 55, 40, 55)) {
enemies.splice(i, 1);
}
}
}
注意,从列表中删除一个元素后,必须更新以下元素的属性 .index
。