1

関数内に setinterval があります。最初のクリックではすべて問題ないように見えますが、その後のクリックごとにこのタイマーが加速します。理由がわかりません。

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

2 に答える 2

3

2 回目にクリックすると、最初の間隔も機能します。これは、このイベントが 100 ミリ秒で 2 回発生するためです。これを試して:

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 ミリ秒ごとに実行するように設定します。あなたの場合、1 回クリックすると 100 ミリ秒ごとに実行が開始され、もう一度クリックすると 100 ミリ秒ごとに 2 回目の実行が開始されると思います (したがって、今では、平均すると、50 ミリ秒ごとに 1 つ実行されます)。

setTimeout をお勧めしますが、それも必要だとは思いません。setinterval をゲーム ループとして使用しようとしていると思いますよね?その場合、一度だけ実行する方法が必要です。

于 2013-04-05T11:59:14.973 に答える