AS3暂停,持续时间不同

时间:2012-01-11 03:58:29

标签: flash actionscript-3 actionscript timer

以下是我正在使用的代码:

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秒而不是2秒。

有没有一种简单的方法可以做到这一点?

2 个答案:

答案 0 :(得分:2)

你是说这个意思吗?

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

然后使用wait(2)或wait(3)调用它,具体取决于你想要的秒数。

答案 1 :(得分:1)

这样的事情:

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变量,以跟踪当前的延迟。您可以从具有范围的任何其他函数中增加此变量。