PDA

Просмотр полной версии : как правильно применить setInterval?


calibri
22.10.2008, 14:19
в первом кадре программа, в ней конструкция
1) setInterval( myfunction, 1000 );

или (не знаю какую выбрать)

2) if(_root.goOutGame == 1)
{
clearInterval(_root.myID);
_root.gotoAndStop(2);
}
else
{
_root.myID= setInterval( myfunction, 1000 );
setInterval( myfunction, 1000 );
}

пробовал и ту, и другую

если применить вторую конструкцию, функция myfunction повторяется как надо, через секунду, дальше мне нужно перейти в другой кадр - повтор вызова функции myfunction прекращается, так как вызваю clearInterval
но, все как-то тормозит, експлорер приходится закрывать аварийно (в функции myfunction принимаю XML-данные и отсылаю)

первая тоже работает как надо, только при переходе на следующий кадр снова повторяется, а мне надо чтоб больше не вызывалась myfunction

если применить первую констр., то все нормально, но как поставить clearInterval без переменной myID, не понимаю

посоветуйте что-нибудь
заранее спасибо

Psycho Tiger
22.10.2008, 15:09
Ну, начнем с того, что в setInterval 1 (2) параметр это строка - вы передаете ему myfunction. Быть может, это и есть строка, но что то я в этом сомневаюсь.
Что значит 1 (2)? Это значит первый/второй, ибо 1 параметром можно передавать... эрм... забыл слово, в общем, то место, где этот интервал выполняется.
Теперь, если я правильно понял:

//интервал выполняется, это ведь не setTimeOut
_root.myID= setInterval( myfunction, 1000 );
//потеряли прошлый интервал перезаписав myID, выполняется аж 2 интервала
setInterval( myfunction, 1000 );
//догонимся и 3, чего уж там

calibri
22.10.2008, 17:53
myfunction получает xml-данные и делает с ними всякие всячины
не знаю, получается ли строка на выходе, думаю вряд ли
значит нельзя пользоваться данной функцией setInterval?

тогда пробую воспользоваться getTimer()
onEnterFrame = function()
{
if(getTimer() > _root.myGameTime)
{
myfunction();
_root.myGameTime = getTimer() + 2000;
}
}

все хорошо работает
но мне надо по нажатию на внешнюю кнопочку выйти на другой кадр, но в другом кадре функция myfunction как продолжает вызываться, а так не надо
как мне остановить getTimer() ???

lexa2000lexa
22.10.2008, 19:33
удалить delete onEnterFrameпо нажатию на ващу внешнию кнопочку