PDA

Просмотр полной версии : глюк с inter=setTimeout();


edo
09.07.2008, 18:36
есть презентаха, внутри которой внутри мувиклипа есть видео, которое нужно спустя какое то время зацикливать
стоит код

stop();
function timer() {
play();
clearTimeout(timer);
}
inter=setTimeout(timer, 69000 );


1.не уверен, правильно ли я очищаю setTimeout
2. при переходе в разделы, с другим видео, бывают случаи соскока на следущий раздел по таймлайну. мне кажется, что это как то связано именно с тем, что при переходе на другой раздел, счетчик не пропадает, и как то действует на _root. можно как то в руте, при входе на раздел, чистить этот скрипт?

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

Infectedcell
09.07.2008, 18:41
clearTimeout(inter)


если мы конечно об одном и том же ;)
Вы же вроде пытаетесь тайаут убить? так зачем под слиртаймаут подставляете имя функции?

iNils
09.07.2008, 18:48
1. setTimeout сам себя очищает
2. Не понятно.

edo
09.07.2008, 18:59
2Infectedcell спасибо

2iNils
тогда зачем вобще существует clearTimeout ? из хелпа его вытащил)


можно както глобально очищать из _root этот скрипт, не прибегая к точному обозначению его местоположения?

etc
09.07.2008, 19:00
1. setTimeout сам себя очищает
В AS3 без clearTimeout этот таймаут продолжает висеть в памяти. Вполне возможно, что и в AS1/AS2 тоже.

edo
09.07.2008, 19:05
2 __etc
как его из памяти вычистить, если при переходе на другой раздел(другая метка в _root) clearTimeout не может сработать, т.к. функция timer не вызывается?

iNils
09.07.2008, 19:07
тогда зачем вобще существует clearTimeout ? из хелпа его вытащил)Что бы была возможность удалить таймаут, если он вам стал вдруг не нужен.

В AS3 без clearTimeout этот таймаут продолжает висеть в памяти. Вполне возможно, что и в AS1/AS2 тоже.Так в AS3 вообще проблема с чисткой памяти.

etc
09.07.2008, 19:09
Так в AS3 вообще проблема с чисткой памяти.
Это и не проблема, собственно. Никто и не говорил, что таймаут будет удален из памяти, даже после выполнения.

edo
09.07.2008, 19:15
2__etc и iNils
вы мне поможете вычистить это из памяти в АС2?)) а то вы уже спором увлеклись)

etc
09.07.2008, 19:16
edo, InfectedCell уже написал.

edo
09.07.2008, 19:21
ааа....т.е. если я тупо в руте пропишу clearTimeout(inter)
он вычиститься у меня из памяти, не смотря на то, что сама функция была внутри мувиклипа, которого в тот момент уже нет на таймлайне?

etc
09.07.2008, 19:34
А вы в руте создавайте inter.

musat
09.07.2008, 19:37
Пример из хелпа:
var my_timedProcess:Number = setTimeout(my_delayedFunction, 2000, "two second delay");

function my_delayedFunction (arg1) {
trace(arg1);
}

var escListener:Object = new Object();
escListener.onKeyDown = function() {
if (Key.isDown(Key.ESCAPE)) {
clearTimeout(my_timedProcess);
}
};
Key.addListener(escListener);


Отсюда все ясно - когда по истечении времени вызывается функция my_delayedFunction, setTimeout самоочищается, и никаких дополнительных команд не нужно. Если нажать во время задержки клавишу escape, для очистки этого активного таймаута используется clearTimeout.

edo
09.07.2008, 19:58
2__etc
а я не знаю, как мне в руте создать на основе этой паузы цикл. тем более, что в некоторых mc видеофайлов несколько, и разной длинны. когда один заканчивается, должен пойти другой и т.д. а вставлено все тупо компонентом FLVPlayback
я не программер, мне не сделать по другому)
могу прикрепить исходник, может поможете разобраться

2 musat
это слишком сложно для художника)