我在一个函数中有一个setinterval,在第一次单击时一切似乎都很好,但每次后续点击都会加速这个计时器。我不明白为什么。
function startGame() {
var myVar=setInterval(function(){myTimer()},100);
}
答案 0 :(得分:2)
当第二次点击时,第一个间隔也有效,因为此事件在100ms内发生两次。试试这个:
var myVar;
function startGame() {
if(myVar)
clearInterval(myVar);
myVar=setInterval(function(){myTimer()},100);
}
OR:
var myVar;
function startGame() {
if(!myVar)
myVar=setInterval(function(){myTimer()},100);
}
答案 1 :(得分:0)
Setinterval将函数设置为每X毫秒运行一次,在你的情况下,我猜你单击一次,它开始每100毫秒运行一次,然后你再次点击它开始第二个每100毫秒运行一次(现在,平均每50毫秒运行一次。)
我会推荐setTimeout,但我不认为那也是你需要的。我认为你试图使用setinterval作为游戏循环,对吗?在这种情况下,您只需要一次运行它。