Форум 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)
-   -   не успевает отрабатываться clearInterval (http://www.flasher.ru/forum/showthread.php?t=179744)

as_68 21.05.2012 04:37

не успевает отрабатываться clearInterval
 
Уважаемые, подскажите.

На сцене есть три кнопки и мувик conteiner.
По нажатию на каждую из кнопок в него грузятся мувики(слайд-шоу).
В каждом мувике есть clearInterval/setInterval.
Так вот, при быстром нажатии кнопок, clearInterval похоже не срабатывает и слайдшоу начинает идти с удвоенной скоростью.
Как отследить что clearInterval сработал?

Зы: Долго и нудно искал по форуму - не нашел.

mooncar 21.05.2012 10:27

Я бы ввел флаг проверки.
Очередная кнопка бы просто не нажалась, пока флаг не станет разрешающим.
Но правильного универсального решения тут подсказать трудно, не видя самого проекта, и не зная как он работает.
"clearInterval похоже не срабатывает" - это слишком расплывчатая локализация проблемы. Может быть есть какая-то ошибка в логике.

as_68 21.05.2012 13:31

>Я бы ввел флаг проверки
А на что проверять? На NaN или undefined?

mooncar 21.05.2012 13:54

Примерно так:

Код AS1/AS2:

container_mc.canNext = true ;
 
btn.onRelease = function  ()
{
        if (container_mc.canNext)
        {
                container_mc.resetMovie();               
                //действия для выгрузки текущего и загрузки следующего
 
                container_mc.canNext = false ;
        }
};
 
//в ролике (мувике?)
function  resetMovie()
{
        clearInterval(intID);
        canNext = true ;
}

Но нюанс в том, что у вас там интервальная функция в каждом мувике, как вы сказали.
(Не очень понятна фраза "грузятся мувики". Может быть так - либо грузятся ролики (т.е. внешнние SWF), либо аттачатся мувики из библиотеки.)
То есть вам нужно дописать в каждом ролике (мувике) метод resetMovie, и вызывать его перед нажатием
очередной кнопки.
Флаг canNext при этом - локальная переменная в этом мувике-ролике, поэтому путь в обработчике выглядит так:
container_mc.canNext

Как вариант - использовать глобальный флаг в основном ролике и тогда:
Код AS1/AS2:

var canNext:Boolean = true ;
 
btn.onRelease = function  ()
{
        if (canNext)
        {
                container_mc.resetMovie();               
                //действия для выгрузки текущего и загрузки следующего
 
                canNext = false ;
        }
};
 
//в ролике (мувике?)
function  resetMovie()
{
        clearInterval(intID);
        _root.canNext = true ;
}


as_68 21.05.2012 17:22

>либо грузятся ролики (т.е. внешнние SWF)
конечно же ролики )))
и очистка запускается из основного ролика
- в четвертом часу ночи описался)))

Спасибо, буду пробовать.

PS:Исходник не выложить очень большой и там много лишнего (чистить времени нет).


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

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