AS3定时器间隔,按钮播放,暂停和重置

时间:2014-12-04 07:19:58

标签: actionscript-3 flash timer setinterval

我尝试做一个具有按钮PLAY,PAUSE和RESET的定时器间隔。 时间间隔有4个部分,每个部分将在上一个部分完成后继续。

部分:

  • A部分= 2分钟
  • B部分= 20秒
  • C部分= 3分钟
  • D部分= 30秒

示例:

  1. 在A部分完成倒计时2分钟后,计时器将自动重置为20秒
  2. B部分完成倒计时20秒后,计时器将自动重置为3分钟
  3. 在C部分完成倒计时3分钟后,计时器将自动重置为30秒
  4. D节完成倒计时30秒后,它将跳入" X"帧。
  5. 在倒计时期间,用户可以随时暂停和继续播放。或重置并从A部分开始。
  6. 目前,我已经创建了区间,但是,当涉及到B区时,它的停止计数。这是我的代码:

    The `$` character is just a shortcut for `window.jQuery`.
    var mins:Number = 0;
    var sec:Number = 5;
    var section:Number = 1;
    var timerInterval;
    
    function timer() {
        sec--;
        if (sec == 0 && mins == 0) {
            clearInterval(timerInterval);
            sec = sec + 10;
            sec--;
        }
    
        if (sec == -1) {
            sec = 59;
            mins--;
        }
    
        if (sec<10) {
            timer_txt.text = mins+":"+"0"+sec;
        } else {
            timer_txt.text = mins+":"+sec;
        }
    }
    
    if (sec == -1) {
        sec = 59;
        mins--;
    }
    
    if (sec<10) {
        timer_txt.text = mins+":"+"0"+sec;
    } else {
        timer_txt.text = mins+":"+sec;
    }
    
    timerInterval = setInterval(timer, 1000);
    

1 个答案:

答案 0 :(得分:1)

你可以使用Timer类很好地完成这项工作。延迟存储在数组(以毫秒为单位)中。每次完成前一个延迟时,定时器为自己分配一个新的延迟值。下面的代码应该很容易理解。

var delayList:Array = new Array(1000, 2000, 3000, 4000);
var iteration:uint = 0;

var timer:Timer = new Timer(delayList[0], delayList.length);
timer.addEventListener(TimerEvent.TIMER, timerNext);
timer.start();

function timerNext(e:TimerEvent):void {
    if(++iteration < delayList.length) {
        timer.delay = delayList[iteration];
        trace("Next: ", delayList[iteration]);
    } else {
        trace("Done!");
    }
}

所以在你的情况下,delayList将是[120000, 20000, 180000, 30000];