タイムアウトに基づいてゲームの停止と復帰を制御することに問題があります。私のコード:
var state = true, timer;
function block(isOn) {
if (isOn) {
$('#block').click(function () {
$(this).fadeOut(1200, function () {
state = true;
timer = setInterval(playGame, 500);
});
});
} else {
clearInterval(timer);
$('#block').fadeIn(1200, function () {
block(true);
});
}
}
function playGame() {
if (state) {
(repeated game instructions)
} else {
block(false);
}
}
$(document).ready(function () {
block(true);
$('#refresh').click(function () {
state = false;
});
});
ブロックは私のスタートページやブレークページのようなものです。ゲームはブロックがオンに設定された状態でtrue
始まり、クリックするとゲームはインターバルで始まります。しかし、#stopをクリックすると、状態が変化してゲームが停止し、タイマーをリセットしたいと思いclearInterval
ます。それから私は再び見せていblock(true)
ます。動作しますが、プレーヤーがもう一度クリックし#block
てゲームに戻ると、倍速のようなものから始まります。関数の2つのインスタンスがplayGame
同時に機能しているようです。それが何であるかわかりません、多分私はインターバルを不適切に使用しています。
ありがとうAntonyを編集 しましたが、setIntervalに変更しても問題は解決しませんでした。blockUpとblockDownを1つの関数に変更します。上記のコードを実際の進捗状況に合わせて更新しました。
とに変更clearInterval(timer);
しtimer = null;
てみましdelete window.timer;
た。それから私はsetIntervalの再起動についてグーグルを始めます、そして私はこれが深刻な問題であることがわかります。私のゲームは多くのjqueryオブジェクトを使用しているので、タイマーの配列を作成したくありません。経済的な解決策を探しています:)