1

我在函数中有一个 setinterval,在第一次点击时一切似乎都很好,但每次后续点击都会加速这个计时器。我不明白为什么。

function startGame() {
    var myVar=setInterval(function(){myTimer()},100);
}
4

2 回答 2

3

第二次单击时,第一个间隔也有效,因为此事件在 100 毫秒内发生两次。试试这个:

var myVar;
function startGame() {
    if(myVar)
        clearInterval(myVar);
    myVar=setInterval(function(){myTimer()},100);
}

或者:

var myVar;
function startGame() {
    if(!myVar)
        myVar=setInterval(function(){myTimer()},100);
}
于 2013-04-05T11:57:06.243 回答
0

Setinterval 将函数设置为每 X 毫秒运行一次,在你的情况下,我猜你点击一次,它开始每 100 毫秒运行一次,然后你再次点击,它开始第二次每 100 毫秒运行一次(所以现在,平均每 50 毫秒运行一次)。

我会推荐 setTimeout,但我认为这也不是你需要的。我认为您正在尝试将 setinterval 用作游戏循环,对吗?在这种情况下,您需要一种只运行一次的方法。

于 2013-04-05T11:59:14.973 回答