Вот код, который я использую:
import flash.utils.Timer;
import flash.events.TimerEvent;
//Pausing the timeline
function wait(){
stop();
var timer:Timer=new Timer(2000,1);
timer.addEventListener(TimerEvent.TIMER,waitdone);
timer.start();
}
function waitdone(e:TimerEvent){
e.currentTarget.removeEventListener(TimerEvent.TIMER,waitdone);
play();
}
Когда я вызываю следующую функцию, она приостанавливается на 2 секунды, легко. Чего я не могу понять, так это вызвать wait(); и добавить к нему еще одну секунду, чтобы получить 3 секунды, а не две.
Есть ли простой способ сделать это?
Ответ 1 · рейтинг 2 · Clay Garrett
Вы имеете в виду вот так?
function wait(numberOfSeconds:int){
stop();
var timer:Timer=new Timer(numberOfSeconds * 1000);
timer.addEventListener(TimerEvent.TIMER,waitdone);
timer.start();
}
Затем вы вызываете его, используя ожидание (2) или ожидание (3) в зависимости от того, сколько секунд вы хотите.
Ответ 2 · рейтинг 1 · ToddBFisher
Как насчет такого:
import flash.utils.Timer;
import flash.events.TimerEvent;
var currentDelay:Number = 2000;
//Pausing the timeline
function wait(){
stop();
var timer:Timer=new Timer(currentDelay,1);
timer.addEventListener(TimerEvent.TIMER,waitdone);
timer.start();
}
function waitdone(e:TimerEvent){
e.stop();
if(currentDelay > 10000){ //stop it after lets say when delay reaches over 11 seconds
e.currentTarget.removeEventListener(TimerEvent.TIMER,waitdone);
play();
} else {
currentDelay += 1000;
e.delay = currentDelay;
e.reset();
e.start();
}
}
Общая идея заключается в том, что вы храните переменную currentDelay вне своих функций, чтобы отслеживать текущую задержку, в которой вы находитесь. Вы можете увеличить эту переменную из любой другой функции, которая имеет для нее область действия.