3 回答
![?](http://img1.sycdn.imooc.com/5458453d0001cd0102200220-100-100.jpg)
TA贡献1770条经验 获得超3个赞
循环间隔或超时绝不是一个好主意
尝试这个
var cnt = antsArray.length
function ants() {
if (cnt <= 0) {
//gameover
// this.maingameloop(antsArray);
return;
}
if (this.isplaying) {
console.log(this.score);
antsArray[cnt].move();
antsArray[cnt].update(antsArray); // ???
if (antsArray[cnt].isSquashed) {
this.score++;
cnt--;
}
setTimeout(play, this.FRAME_RATE);
}
}
![?](http://img1.sycdn.imooc.com/54584e2c00010a2c02200220-100-100.jpg)
TA贡献1934条经验 获得超2个赞
我清除了 setInterval 然后我检查了条件并添加了一个休息时间,这不会是非法的,因为我超出了时间间隔,所以它对我有用,谢谢大家的建议
maingameloop = 函数(antsArray){
//inititialization
// antsArray[i].draw();
// antsArray[i].checkifSmashed();
//gameloop
if (this.isplaying) {
for (let i = 0; i< antsArray.length; i++) {
let gameloop = setInterval(() => {
antsArray[i].move();
antsArray[i].update(antsArray);
if (antsArray[i].isSquashed) {
this.score++;
clearInterval(gameloop);
}
}
, this.FRAME_RATE);
if(antsArray[i].isSquashed ){
antsArray.splice(i, 1);
break;
}
}
}else {
//gameover
// this.maingameloop(antsArray);
}
}
添加回答
举报