![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Dec 2007
Адрес: Пермь - Лысьва
Сообщений: 53
|
Такая ситуация: Главная флэшка загружает флэшку в которой есть таймер(заданный setInterval(..., 1000)). Когда первый раз загружаешь эту флэшку, таймер идет как надо. Но при повторых загрузках таймер с каждым разом идет все быстрее и быстрее.
Не могу понять в чем проблема. |
|
|||||
|
Регистрация: Jun 2008
Адрес: курский вокзал
Сообщений: 1,114
|
привет,я тож с этим бился,месяца 2-3 назад.Проблему так мы тут и не решили.
Попробуй setTimeout,ну или тогда onEnterFrame.
__________________
Я просто добрый шутник. |
|
|||||
|
Негуру
администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,884
Записей в блоге: 7
|
Допустим setInterval каждые 5 секунд вызывает некую функцию. Если загрузить 5 клипов последовательно через 1 секунду. То 5 setInterval будут суммарно вызывать эту функцию каждую секунду.
Для того чтобы это избежать, надо перед запуском setInterval проверять значение флага (флаг, это такая переменная, которая сигнализирует каком то состоянии). Допустим если он равен true, то запускать (и менять на false), false - нет. |
|
|||||
|
Регистрация: Dec 2007
Адрес: Пермь - Лысьва
Сообщений: 53
|
iNils, не совсем Вас понял. Решил не париться и написал черезе enterFrame.
|
|
|||||
|
Негуру
администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,884
Записей в блоге: 7
|
setInterval глобальная функция. Если перегружать в клип один тот ролик, то старый setInterval не убивается, а продолжает работать. В результате, у вас действует не один setInterval, а столько, сколько раз вы загружали ролик, только действуют они асинхронно.
|
|
|||||
|
Регистрация: Dec 2007
Адрес: Пермь - Лысьва
Сообщений: 53
|
Ясно. Значит можно просто при выгрузке клипа удалить setInterval.
|
|
|||||
var flag:Boolean = false; var my_interval:Number; set_interval = function(value:Boolean, func:Function, timer:Number):Void { if (value == true && flag == false) { my_interval = setInterval(func, timer); flag = true; } if (value == false) { clearInterval(my_interval); flag = false; } } my_function = function():Void { trace("my_function"); } set_interval(true, my_function, 1000); set_interval(true, my_function, 1000); set_interval(true, my_function, 1000); Последний раз редактировалось alecsisk; 20.12.2008 в 10:28. |
![]() |
![]() |
Часовой пояс GMT +4, время: 17:25. |
|
|
« Предыдущая тема | Следующая тема » |
|
|