Level1();
var lvl1count = 0;
function Level1() {
var x = setInterval(function () {
lvl1count++;
var x = 84 + (Math.random() * (cw - 27));
var y = 84 + (Math.random() * (ch - 27));
Enemies.add(new Enemy(x, y, 1, 90));
}, 1000);
if (lvl1count == 4) {
console.log("finish");
clearInterval(x);return;
}
}
我试图在每隔1000毫秒添加一个对象,当有4个对象添加时我想清除Interval并停止该功能但是我遇到问题并且setInterval
功能没有停止< / p>
答案 0 :(得分:0)
因为if检查不在正在更新的代码中。仅在调用if (lvl1count == 4)
时检查Level1
。在你的间隔内移动支票,它会工作。您还需要更改变量名称,以免它们发生冲突。
function Level1() {
var timer = setInterval(function () {
lvl1count++;
var x = 84 + (Math.random() * (cw - 27));
var y = 84 + (Math.random() * (ch - 27));
Enemies.add(new Enemy(x, y, 1, 90));
if (lvl1count == 4) {
console.log("finish");
clearInterval(timer);
return;
}
}, 1000);
}
var lvl1count = 0;
Level1();
答案 1 :(得分:0)
当您调用if
函数时,您的最新Level1
语句只执行一次。因此,每次调用lvl1count
内的函数时,都需要检查计数器(setInterval
变量):
var x = setInterval(function () {
lvl1count++;
var x = 84 + (Math.random() * (cw - 27));
var y = 84 + (Math.random() * (ch - 27));
Enemies.add(new Enemy(x, y, 1, 90));
if (lvl1count == 4) {
console.log("finish");
clearInterval(x);
return;
}
}, 1000);
注意:正如@epascarello所指出的,这需要更改变量名称。由于您已在函数内部使用x
,因此请使用其他变量更改setInterval赋值,例如
var anotherVariable = setInterval(function () {
和
clearInterval(anotherVariable);
答案 2 :(得分:0)
在你的情况下你可以使用setTimeout而不是像这样的setInterval
Level1();
var lvl1count = 0;
function Level1() {
setTimeout(function () {
lvl1count++;
//stuff
if(lvl1count++ <= 5) {
Level1();
}
}, 1000);
}