如何重新启动 setInterval



我像这样使用 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()

最新更新