Пауза AS3, разная продолжительность

Вот код, который я использую:

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 секунды, а не две.

Есть ли простой способ сделать это?


person Phill    schedule 11.01.2012    source источник


Ответы (2)


Вы имеете в виду вот так?

function wait(numberOfSeconds:int){
    stop();
    var timer:Timer=new Timer(numberOfSeconds * 1000);
    timer.addEventListener(TimerEvent.TIMER,waitdone);
    timer.start();
}

Затем вы вызываете его, используя ожидание (2) или ожидание (3) в зависимости от того, сколько секунд вы хотите.

person Clay Garrett    schedule 11.01.2012
comment
Легко, красиво и просто, это именно то, что я искал. Спасибо - person Phill; 11.01.2012

Как насчет такого:

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 вне своих функций, чтобы отслеживать текущую задержку, в которой вы находитесь. Вы можете увеличить эту переменную из любой другой функции, которая имеет для нее область действия.

person ToddBFisher    schedule 11.01.2012
comment
Извините, я не уверен, что правильно объяснил. Я хочу сохранить его на 2 секунды, но увеличить его в 3 или 4 других местах, чтобы быть на секунду больше, используя ту же функцию. - person Phill; 11.01.2012