所以,我正在用HTML / JS创建一个游戏(主要是Jquery)。
我在游戏开始时初始化了一个对象数组(当用户按下P进行播放时)。每个对象都是一个下降的对象(我知道它的失败是一个名为“working”的布尔值),“move”方法设置一个从1到22的位置。每次移动时,它会显示当前div,其数字为ID(表示位置),并隐藏前一个div。
问题在于,游戏只与Object的一个实例完美配合(因此阵列中只有一个单元格),但是当我尝试放置其他几个对象时,它们不会移动。
这是对象构造函数:
function flyers(){
this.pos = 0;
this.working = false;
this.jump = 0;
this.interval;
this.move = function(){
if (this.working == true){
if (this.pos == 22)
{
$("#perso21").hide();
this.pos = 0;
this.startWork();
}
checkSave();
if (this.jump == 0)
{ if ((this.pos == 5 && playerPos != 1) || (this.pos == 13 && playerPos != 2) || (this.pos == 19 && playerPos != 3))
{
this.die();
}
if ((this.pos == 4 && playerPos == 1) || (this.pos == 12 && playerPos == 2) || (this.pos == 18 && playerPos == 3))
this.jump = 1;
}
else
{
if (this.pos == 5 || this.pos == 13 || this.pos == 19)
{
score++;
this.jump = 0;
}
$(".score").html("" + score + "");
}
$("#perso" + (this.pos - 1) + "").hide();
$("#perso" + this.pos + "").show(); this.pos++;
}
else
clearInterval(this.interval);
};
this.startWork = function()
{
clearInterval(this.interval);
this.working = true;
this.interval = setInterval(this.move, 1000 - (score / 10 * 100));
}
this.die = function(){
this.working = false;
this.pos = 0;
this.jump = 0;
if (miss < 2)
{
miss++;
}
else
{
quitGame();
}
clearInterval(this.interval);
};
return this;}
阵列初始化:
flyerstab[0] = new flyers();
flyerstab[1] = new flyers();
flyerstab[2] = new flyers();
flyerstab[3] = new flyers();
flyerstab[0].startWork();
产卵者(只能同时有4个物体掉落)
spawn = setInterval(function()
{
var i;
for (var i = flyerstab.length - 1; i >= 0; i--) {
if (flyerstab[i].working == false)
{
flyerstab[i].startWork();
break;
}
else
console.log(i + " is working");
};
}, 5000 - (score / 10 * 100));
我试着一整天都找到了原因,但我没有设法......我构建它们是不是很糟糕?
答案 0 :(得分:0)
在this.interval = setInterval(this.move, 1000 - (score / 10 * 100));
内部,this.move
作为全局上下文调用this
。相反,使用
this.interval = setInterval(this.move.bind(this), 1000 - (score / 10 * 100));