2014-02-16 4 views
0

Я использую setInterval следующим образом:Как повторно инициировать setInterval

game.clock.interval = window.setInterval(game.clock_update, game.clock.delay); 

Я потом вызвать функцию, чтобы очистить интервал:

game.clock_stop = function() { 
    clearInterval(game.clock.interval); 
} 

Edit:

Реальная проблема похоже, когда я пытаюсь вызвать метод, который запускает интервал agian. Когда нажимается какой-то элемент (в моем случае тег «i»), я использую функцию clearInterval выше; В то же самое время я открываю Colorbox ..., я пытаюсь возобновить интервал, когда я вызываю onClosed для 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(); 
    } 
}; 
+2

Вызов 'setInterval()' снова, как вы делали первый раз. – Pointy

+0

Название не совсем точное, но я отредактировал сообщение, если кто-то знает, как использовать colorbox, любая помощь будет оценена. – Corjava

ответ

3

Редактировать: по новой информации, добавленной по вашему вопросу.

Код для вашего метода game.pause() выглядит неправильно. определение onClosed: не является частью какого-либо объекта, поэтому он, вероятно, не привязан к вашему цветному окну вообще.

Я предполагаю, что это должно быть так:

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().

+0

Хмм, это именно то, что я изначально пытался ... это должно быть что-то еще, что я делаю. Я отредактирую свой пост. – Corjava

+0

@Corjava - посмотрите, что я добавил в начале моего ответа. – jfriend00

+0

ха-ха, да, я учусь, когда я иду, я должен был это осознать. Спасибо – Corjava

Смежные вопросы