我在控制停止並根據超時返回遊戲時遇到問題。我的代碼:使用間隔停止和恢復(或只是重新啓動)
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
返回遊戲時,它會以雙倍速度開始。看起來有兩個playGame
函數同時工作的實例。我不知道它是什麼,也許我不適當地使用間隔。
編輯 謝謝安東尼,但改爲setInterval沒有解決我的問題。我將blockUp和blockDown更改爲一個函數。我已經更新了上面的代碼到我的實際進度。
我試過改變clearInterval(timer);
到timer = null;
和delete window.timer;
。然後,我開始谷歌重新啓動setInterval,我看到這是嚴重的問題。我的遊戲使用了很多jquery對象,所以我不想創建一組定時器,我正在尋找經濟的解決方案:)
它看起來像你應該使用'setInterval',而不是'setTimout'。如果'state == true','playGame()'每500ms調用一次。當state == false時,使用'clearInterval'似乎更容易。 – Antony 2013-03-17 13:40:28