PDA

Просмотр полной версии : Проблема: При многократных загрузках ролика таймер в нем сбивается


StudentPSTU
30.11.2008, 03:50
Такая ситуация: Главная флэшка загружает флэшку в которой есть таймер(заданный setInterval(..., 1000)). Когда первый раз загружаешь эту флэшку, таймер идет как надо. Но при повторых загрузках таймер с каждым разом идет все быстрее и быстрее.
Не могу понять в чем проблема.

scarbo
30.11.2008, 04:54
привет,я тож с этим бился,месяца 2-3 назад.Проблему так мы тут и не решили.
Попробуй setTimeout,ну или тогда onEnterFrame.

iNils
30.11.2008, 05:49
Допустим setInterval каждые 5 секунд вызывает некую функцию. Если загрузить 5 клипов последовательно через 1 секунду. То 5 setInterval будут суммарно вызывать эту функцию каждую секунду.
Для того чтобы это избежать, надо перед запуском setInterval проверять значение флага (флаг, это такая переменная, которая сигнализирует каком то состоянии). Допустим если он равен true, то запускать (и менять на false), false - нет.

StudentPSTU
30.11.2008, 20:09
iNils, не совсем Вас понял. Решил не париться и написал черезе enterFrame.

iNils
30.11.2008, 20:21
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);
возможно поможет