我像这样使用 setInterval:
game.clock.interval = window.setInterval( game.clock_update, game.clock.delay );
然后我稍后调用一个函数来清除间隔:
game.clock_stop = function() {
clearInterval(game.clock.interval);
}
编辑:
真正的问题似乎是当我尝试调用再次启动间隔的方法时。当单击某个元素(在我的例子中是"i"标签)时,我使用它上面的 clearInterval 函数;在同一时间,我打开了一个 Colorbox...,当我调用 onClosed for colorbox 时,我正在尝试恢复间隔。
$("#pause").on("click",function(){
game.pause();
game.clock_stop();
});
game.pause = function() {
$.colorbox({href:"pause.php", title:"The Game Is Paused"});
onClosed:function(){
game.clock_start();
}
};
编辑:基于您添加到问题中的新信息。
game.pause()
方法的代码看起来有误。 onClosed:
定义似乎不是任何对象的一部分,因此它可能根本没有附加到您的 Colorbox。
我猜应该是这样的:
game.pause = function() {
$.colorbox({
href:"pause.php",
title:"The Game Is Paused",
onClosed:function(){
game.clock_start();
}
});
};
你只需要像第一次一样再次打电话给setInterval()
:
game.clock.interval = window.setInterval( game.clock_update, game.clock.delay );
这将根据您向setInterval()
进行新调用的确切时间启动新的间隔计时器。
如果你打算在几个地方执行此操作,那么就像你有一个clock_top()
方法一样,你可能想要创建一个clock_start()
方法:
game.clock_start = function() {
// if clock not already running, start it
if (!game.clock.interval) {
game.clock.interval = setInterval(game.clock_update, game.clock.delay);
}
}
game.clock_stop = function() {
clearInterval(game.clock.interval);
// clear saved timer so we know the clock is not running any more
game.clock.interval = null;
}
因此,任何时候您想启动它,都可以拨打game.clock_start()
。