-4

アタック=攻撃ボタン。

このコードを実行 (ボタンをクリック) すると、ボタンが無効になるまでに約 1 秒かかります。これをすぐに無効にするように設定するにはどうすればよいですか? 1000ミリ秒のタイマーが原因だと思いますが、よくわかりません。

var disabledStartTimer = setInterval(disabledTimer, 1000);
var start = 0;

function disabledTimer() { 
    if (start > 5){
        clearInterval(disabledStartTimer);
        console.log("disabled timer stopped");
        blitz.disabled = false;
    }
    else {
        blitz.disabled = true;
        start++;
    };
}
4

3 に答える 3

1

はい、それは 1000ms タイマーのせいです。10 に設定すると、無効にするのに 10 ミリ秒かかります。無効にして開始する必要がある場合blitz.disabled = trueは、間隔コールバックからコードを移動 (またはコピー) します。

var disabledStartTimer = setInterval(disabledTimer, 1000);
var start = 1;  // set to 1 to maintain consistency (i.e. call blitz.disabled = true the same amount of times as the original code.

blitz.disabled = true;

function disabledTimer() { 

    if (start > 5) {
        clearInterval(disabledStartTimer);
        console.log("disabled timer stopped");
        blitz.disabled = false;
    }
    else {
        blitz.disabled = true;
        start++;
    }
}

より複雑なことを行う必要があり、このコードは単なる例である場合は、複雑なステートメントを関数内にラップして、間隔の外側と内側から呼び出すことができます。

var disabledStartTimer = setInterval(disabledTimer, 1000);
var start = 1; // set to 1 to maintain consistency (i.e. call blitz.disabled = true the same amount of times as the original code.

function disableBlitz() {
    blitz.disabled = true;
}

disableBlitz();

function disabledTimer() { 

    if (start > 5) {
        clearInterval(disabledStartTimer);
        console.log("disabled timer stopped");
        blitz.disabled = false;
    }
    else {
        disableBlitz();
        start++;
    }
}
于 2013-10-21T02:53:24.347 に答える
0

タイマーを0にセット

var disabledStartTimer = setInterval(disabledTimer, 0);

または単に呼び出す

disabledTimer();
于 2013-10-21T02:56:01.080 に答える
0

これを設定します。

var disabledStartTimer = setInterval(disabledTimer, 1000); // 1 sec

これに:

var disabledStartTimer = setInterval(disabledTimer, 0); // 0 sec

ここでは時間はミリ秒単位でカウントされます。あなたはこれを確信することができます、それは本当にsetInterval.

于 2013-10-21T02:58:14.470 に答える