【发布时间】:2018-07-27 12:04:02
【问题描述】:
setInterval "MoveToPlayer" 应该在满足 "checkPosition" 方法的第一个条件后开始,并且它应该运行(这个工作)。再次满足相同条件后,应停止并以不同的参数重新启动。我通过简单的放置 clearInterval(MoveToPlayer) 将完成这项工作,但它不起作用。 第二个问题是如何从“checkPosition”方法中停止这个间隔?
class player {
constructor(name, PosY) {
this.name = name;
this.PosX = 5;
this.PosY = PosY;
this.object = $('.' + name);
this.speed = 0;
this.direction = "";
this.lifes = 3;
}
playerMove(thisRaft) {
var MoveToPlayer = setInterval(() => {
clearInterval(MoveToPlayer)
$('.player1').css('left', thisRaft.PosX * 50);
$('.player1').css('bottom', thisRaft.PosY * 50);
}, 1);
}
checkPosition(x, y) {
for (var i = 0; i < raftsTab.length; i++) {
if (x == raftsTab[i].PosX && y == raftsTab[i].PosY) {
let thisRaft = raftsTab[i];
this.playerMove(thisRaft);
return;
}
}
for (var i = 0; i < raftsTab.length; i++) {
if (x !== raftsTab[i].PosX && y !== raftsTab[i].PosY && y !== 0 && y !== 5 && y !== 10) {
console.log("Dead");
player1.PosX = 5;
player1.PosY = 0;
changePosition();
return;
}
}
}
}
【问题讨论】:
-
将变量声明移出函数。
-
你真的需要1 ms的间隔吗?
-
@barbsan 这是一个游戏,我需要确保小间隔不是问题。当我解决我的游戏的一般问题时,我会尝试使用 biggre 值。
-
您不认为 setTimeout 比 setInterval 更适合您的用例吗?
-
Protoxy 不,因为它是像老青蛙一样的游戏。玩家必须跳到木筏上并在上面流动,直到下一步行动。