Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   перезапуск setInterval (http://www.flasher.ru/forum/showthread.php?t=142863)

Contemplator 02.08.2010 05:42

перезапуск setInterval
 
Приветствую!
Не ругаемся и не пинаем - в поиске порылся - нужного не нашёл =(

Вот с чем столкнулся: необходимо перезапускать setInterval при определённых условиях... своеобразный таймер обратного отсчёта, который срабатывает если за время интервала не произошло никаких изменений и перезапускается (начинает отсчёт с 0) если изменения произошли...
Переменная, которая является идентификатором необходимости перезапуска таймера - меняется (или не меняется) в onEnterFrame...
Как оптимальней реализовать подобного рода таймер?

silin 02.08.2010 09:53

setInterval возвращает идентифик4атор, по которому его можно найти и убить
пример: если в течении 2 с кликнуть, то setInterval не сработает
Код AS1/AS2:

var timerID = setInterval(timerAction, 2000);
function timerAction():Void {
        trace("timerAction");
 
}
function onMouseDown():Void {
        clearInterval(timerID);
}


Contemplator 02.08.2010 11:08

Цитата:

Сообщение от silin (Сообщение 926421)
setInterval возвращает идентифик4атор, по которому его можно найти и убить
пример: если в течении 2 с кликнуть, то setInterval не сработает
Код AS1/AS2:

var timerID = setInterval(timerAction, 2000);
function timerAction():Void {
        trace("timerAction");
 
}
function onMouseDown():Void {
        clearInterval(timerID);
}


Про то как убить-то я знал в принципе - не знал как более корректно записать и как сделать перезапуск после "убийства" =)) ... Но спасибо за подсказку =)
Теперь такой вопрос: на сколько корректна данная запись (работать-то она работает, вопрос именно в корректности):

Код AS1/AS2:

m = 0;
 
timerAction = function():Void {
        m++;
        trace("timerAction " + m);
}
var timerID = setInterval(timerAction, 5000);
 
onMouseDown = function():Void {
        clearInterval(timerID);
        timerID = setInterval(timerAction, 5000);
}


silin 02.08.2010 11:53

имо все верно: текущий очищаем, ID нового запоминаем

Contemplator 02.08.2010 11:56

Цитата:

Сообщение от silin (Сообщение 926437)
имо все верно: текущий очищаем, ID нового запоминаем

спасибо за помощь ;)

silin 02.08.2010 11:56

очищать интервал перед запуском вообще нормальная практика, clearInterval несуществующего никакой ошибки не вызывает, но зато гарантия от запуска дубля


Часовой пояс GMT +4, время: 06:39.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.