我在根据超时控制停止和返回游戏时遇到问题。我的代码:
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;
});
});
Block 类似于我的起始页和中断页。游戏从设置的块开始true
,点击游戏以间隔开始。但是点击 #stop 游戏会因状态改变而停止,我想通过clearInterval
. 那我又来秀了block(true)
。它可以工作,但是当玩家再次点击#block
返回游戏时,它会以双倍速度开始。看起来有两个playGame
函数实例同时工作。我不知道它是什么,也许我不恰当地使用了 Interval。
编辑 感谢安东尼,但更改为 setInterval 并没有解决我的问题。我将我的 blockUp 和 blockDown 更改为一个函数。我已将上面的代码更新为我的实际进度。
我尝试更改clearInterval(timer);
为timer = null;
and delete window.timer;
。然后我开始在谷歌上重新启动 setInterval,我发现这是一个严重的问题。我的游戏使用了许多 jquery 对象,所以我不想创建计时器数组,我正在寻找经济的解决方案:)