Просмотр полной версии : Проблема: При многократных загрузках ролика таймер в нем сбивается
StudentPSTU
30.11.2008, 03:50
Такая ситуация: Главная флэшка загружает флэшку в которой есть таймер(заданный setInterval(..., 1000)). Когда первый раз загружаешь эту флэшку, таймер идет как надо. Но при повторых загрузках таймер с каждым разом идет все быстрее и быстрее.
Не могу понять в чем проблема.
привет,я тож с этим бился,месяца 2-3 назад.Проблему так мы тут и не решили.
Попробуй setTimeout,ну или тогда onEnterFrame.
Допустим setInterval каждые 5 секунд вызывает некую функцию. Если загрузить 5 клипов последовательно через 1 секунду. То 5 setInterval будут суммарно вызывать эту функцию каждую секунду.
Для того чтобы это избежать, надо перед запуском setInterval проверять значение флага (флаг, это такая переменная, которая сигнализирует каком то состоянии). Допустим если он равен true, то запускать (и менять на false), false - нет.
StudentPSTU
30.11.2008, 20:09
iNils, не совсем Вас понял. Решил не париться и написал черезе enterFrame.
setInterval глобальная функция. Если перегружать в клип один тот ролик, то старый setInterval не убивается, а продолжает работать. В результате, у вас действует не один setInterval, а столько, сколько раз вы загружали ролик, только действуют они асинхронно.
StudentPSTU
19.12.2008, 19:06
Ясно. Значит можно просто при выгрузке клипа удалить setInterval.
alecsisk
20.12.2008, 10:24
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);
возможно поможет
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.