0

私は今、簡単なゲームに取り組んでいます。タイマーに不具合があり、何をしているのかわからないことを除けば、ほぼ完了しています。ボタンを押すと、キャンバス上の HTML5 テキストが 35 から 0 までカウントダウンを開始します。最初の実行では問題ありません。ただし、更新せずにもう一度プレイすることを選択すると、タイマーのカウントダウンが速くなります。これがコードです。

var timer = 35;

ctx.fillText("Countdown: " + timer, 320, 32);

function resetReggie(){
    reggie.x = canvasWidth / 2;
    reggie.y = canvasHeight / 2;
}

//Starts Timer for Timed Game
function timedMsg()
{
    resetReggie();
    ballsCaught = 0;
    timer = 35;
    alert('Pick up as many as you can in ' + timer + ' seconds');
    countDown();
        var t=setTimeout(function() {
        var again = confirm("TIMES UP! You Gathered " + ballsCaught + " Balls! Play Again?");
            if (again === true){ 
                timedMsg(); 
                resetReggie(); 
            }
                if (again === false){
                resetReggie();
                ballsCaught = 0;
                timer = 35;
                }
        }, timer * 1000);

}

function countDown() {
    if (timer != 0){
        timer-=1;
        setTimeout('countDown()', 1000);
    }
}
4

2 に答える 2

0

私のコメントで述べたように、新しいゲームを開始するたびに、タイムアウト値が減少しているように見えます。その結果、毎回の時間が短縮されます。

これを試して:

var timeout = currentTime = 5;
var int = setInterval(function() {
    ​console.log(currentTime);
    currentTime--;
    if(currentTime < 0) {
    var again = confirm('Play again?');
    if(again) {
        currentTime = timeout;
    }
    else {
        clearInterval(int);
    }
    }
}, 1000);​

http://jsfiddle.net/gRoberts/CsyYx/

コンソール (Chrome では F12) を確認するか、コードを更新してブラウザーに書き込み、動作を確認してください ;)

于 2012-07-26T14:30:10.130 に答える