Javascript 删除选定对象之前数组中的所有元素
可能只是一些愚蠢的东西,但我正在为大学作业在p5.js中重写Galaga,一开始我擅长消灭敌人。当一颗子弹射中屏幕上的第三个敌人时,所有的敌人都会被摧毁 “敌人”阵列只是一个简单的阵列,其中会推送敌人的对象:Javascript 删除选定对象之前数组中的所有元素,javascript,arrays,loops,processing,p5.js,Javascript,Arrays,Loops,Processing,P5.js,可能只是一些愚蠢的东西,但我正在为大学作业在p5.js中重写Galaga,一开始我擅长消灭敌人。当一颗子弹射中屏幕上的第三个敌人时,所有的敌人都会被摧毁 “敌人”阵列只是一个简单的阵列,其中会推送敌人的对象:敌军=[] 对敌人的摧毁功能是 this.die = function() { enemies.splice(enemies[this.index], 1); } 循环是 for( var b = 0; b < player.bullets.length; b++) {
敌军=[]代码>
对敌人的摧毁功能是
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();
}
}
}
for(var b=0;b
任何帮助都很好拼接
的参数是已删除top的开始索引(第一个元素)和元素数
所以声明
敌人.splice(敌人[this.index],1);
似乎一点也不正确。可能是声明
敌人.拼接(this.index,1);
如果此索引将是阵列中敌人的索引,则将执行您想要的操作。但是,如果你已经从阵列中删除了先前安排的敌人,情况就不会是这样了
我建议做敌人。拼接(I,1)代码>而不是敌人[i].die()代码>:
for(var b=0;b
注意,一旦从列表中删除某个元素,则必须更新以下元素的属性.index
。拼接的参数是已删除的起始索引(第一个元素)和元素数
所以声明
敌人.splice(敌人[this.index],1);
似乎一点也不正确。可能是声明
敌人.拼接(this.index,1);
如果此索引将是阵列中敌人的索引,则将执行您想要的操作。但是,如果你已经从阵列中删除了先前安排的敌人,情况就不会是这样了
我建议做敌人。拼接(I,1)代码>而不是敌人[i].die()代码>:
for(var b=0;b
请注意,一旦从列表中删除某个元素,则必须更新以下元素的属性.index
。这里的问题到底是什么?不要删除(.splice())已销毁的元素,而是将其替换为未显示在屏幕中的另一个值敌人[this.index]
返回什么?如果它不是一个数字,那么它就不会做出正确的反应。另外,不要忘记循环从开始到结束,一旦拼接,就会改变数组的大小,增加i
,导致跳过。例如,如果i
是3,而您删除了索引3,那么索引4处的内容现在是3,但您将i
增加到4,而不检查新的3。当您拼接以补充即将到来的增量时,可以从末尾到开头或递减i
。如果执行操作,是否有效。拼接(i,1)代码>而不是敌人[i].die()代码>?这里的问题到底是什么?不是删除(.splice())已销毁的元素,而是用另一个未显示在屏幕上的值替换它bu敌[this.index]
返回什么?如果它不是一个数字,那么它就不会做出正确的反应。另外,不要忘记循环从开始到结束,一旦拼接,就会改变数组的大小,增加i
,导致跳过。例如,如果i
是3,而您删除了索引3,那么索引4处的内容现在是3,但您将i
增加到4,而不检查新的3。当您拼接以补充即将到来的增量时,可以从末尾到开头或递减i
。如果执行操作,是否有效。拼接(i,1)代码>而不是敌人[i].die()代码>?