PDA

Просмотр полной версии : Никак не понимаю работу функции setInterval


Bitcoolman
29.10.2009, 16:20
Пришел к выводу что setInterval является моим камнем преткновения. Например пишу функцию и хочу что бы она повторялась. Человечек идет слева направо заходит за пределы и появляется в 0 отметке и опять идет слева направо. Мне захотелось сделать так что бы слева он появился только через 5 сек. В конце скрипта пишу setInterva(5000); но она не работает(((((
Заранее спасибо))

lexa2000lexa
29.10.2009, 16:22
а вы почитайте хелп, может тогда станет ясней. Что значит запись setInterva(5000)?
что дожно произойти через 5 сек, в этой записе?

Bitcoolman
29.10.2009, 16:24
Так Я читал и нетолько в хелпе... У меня получается такой вот код
this.onEnterFrame = function():Void {
mc._x += 10;
if (mc._x>800+(mc._width/2)) {
mc._x = 0-(mc._width);
}
};
setInterval(mc,5000);
что не так???

Добавлено через 1 минуту
тока он не робит:(

point111
29.10.2009, 16:46
если в кадре прописать


stop();
aaa = setInterval(function () {
play();
clearInterval(aaa);
}, 3000);



setInterval каждые три секунды будет запускать play(), но т.к. одновременно он запустит свое уничтожение, то второго раза не будет

Bitcoolman
29.10.2009, 16:56
Stop на это не работает. И даже за исключением этого все равно это не будет работать...

udaaff
29.10.2009, 17:19
var l:Number = 800 + mc._width / 2;
onEnterFrame = onEnterFrameHandler;

function onEnterFrameHandler():Void
{
mc._x += 10;
if (mc._x > l) {
mc._x = -mc._width;
delete onEnterFrame;
setTimeout(timeout_completeHandler, 5000);
}
}

function timeout_completeHandler():Void
{
onEnterFrame = onEnterFrameHandler;
}

point111
29.10.2009, 17:24
Stop на это не работает. И даже за исключением этого все равно это не будет работать...

читай внимательно ВЕСЬ мой пост, я не решаю твою проблему, я объясняю как работает setinterval, я отвечаю на заголовок темы. И, кстати, это работает, я выдернул это из рабочего проекта.

iflamberg
29.10.2009, 17:31
var intervalID:Number;

function cycle() {
mc._x += 10;
if (mc._x>800+(mc._width/2)) {
mc._x = 0-(mc._width);
_root.onEnterFrame=null;
intervalID=setInterval (startAgain,5000)
}
}

function startAgain () {
clearInterval (intervalID);
_root.onEnterFrame = cycle;
}


_root.onEnterFrame = cycle;