所以在Khan Academy上写游戏时当我尝试从数组中删除子弹时,我遇到错误“对象不支持方法拼接”我已经检查了我的代码几个小时但没有发现为什么它不起作用。想法?
编辑:用于删除项目符号的代码是bullets[i].splice(i,1);
,这就是我的代码错误。
MVCE:
var bullets = [];
var bullet= function(x,y,blah)
{
//code that is not important here
};
bullets.push(bullet(0,0,30));
for(var I = 0; I < bullets.length; I++){
if(bulletRemove){
bullets[I].splice(i,1)
}
}
答案 0 :(得分:2)
您有一个名为bullets
的变量:
var bullets = [];
(旁注:为什么在这一行之前有一个随机的花括号?)
此bullets
变量是一个数组。它包含Bullet
类的实例:
bullets.push(new Bullet(x, y, 10, player.x+bSize/2, player.y+bSize/2));
您可以使用该数组访问特定索引处的Bullet
,然后您可以在该实例上调用Bullet
类的函数:
bullets[i].move();
您也可以在阵列上调用splice()
函数:
bullets.splice(i,1);
但是,您无法调用特定splice()
实例上的Bullet
函数!
bullets[i].splice(i,1);
此行从Bullet
数组的i
索引中获取bullets
的实例,然后尝试从splice()
调用Bullet
函数}类。但是Bullet
类没有splice()
函数!这就是造成错误的原因。
相反,你可能打算在数组本身上调用它:
bullets.splice(i,1);
将来,请请尝试在发布问题之前缩小问题范围。尝试发布MCVE而不是整个项目。您可以组合一个示例程序,该程序仅使用几行来创建硬编码数组,并用它来演示您的问题。您可能在创建MCVE的过程中自己发现了问题!