Вход

Просмотр полной версии : Переход к следующему кадру через заданное время


Wallo
20.12.2013, 21:24
Всем доброго времени суток.
Подскажите пожалуйста, есть код:
//Правильный вариант ответа
answer_3.addEventListener(MouseEvent.CLICK, correct_answer);
function correct_answer(event:MouseEvent):void
{
if (fail>0){
hit += 0;
hitmax += 0;
}else if (hit<1){
hit += 1;
hitmax += 1;
}
ans3= 1;
sel3 = false;
select.visible = sel3;
strue.x = 13,50;
strue.y = 405;
strue.visible = true;

function goframe(){
gotoAndStop(31);
}
setInterval(goframe, 250);

}
Нужно что бы по щелчку,через 250 секунд,происходил переход к следующему кадру.
function goframe(){
gotoAndStop(31);
}
setInterval(goframe, 250);
Все вроде бы работает, но через 2-3 кадра,функция я так понял зацикливается, и начинаются прыжки через каждые 250 мс. , автоматически.
Подскажи что нужно поправить,может как то с помощью return;

samana
21.12.2013, 00:12
Вы ведь запустили интервал, по этому и продолжает срабатывать с интервалом. Вам нужно останавливать интервал, либо попробовать setTimeout вместо setInterval.

dimarik
21.12.2013, 00:40
А ко всему вышесказанному я советую отказаться от вложенной анонимной функции. Сделайте её полем объекта.

BAXTER
21.12.2013, 21:00
Я бы сделал это так:
var timer:Timer = new Timer(250000,1);

answer3.addEventListener(MouseEvent.CLICK, correctAnswer);

function correctAnswer(e:MouseEvent):void{
//далее твой код
if (fail>0){
hit = 0;
hitmax = 0;
}else if (hit<1){
hit ++;
hitmax ++;
}
ans3 = 1;
sel3 = false;
select.visible = sel3;
strue.x = 13,50;
strue.y = 405;
strue.visible = true;
//в конце функции запусти таймер
timer.addEventListener(TimerEvent.TIMER, goframe);
timer.start();
}

function goframe(e:Event):void{
gotoAndStop(31);
timer.removeEventListener(TimerEvent.TIMER, goframe);
}

в первом кадре:
stop();