2014-12-04 46 views
1

我試圖做一個具有按鈕播放,暫停和重置的定時器間隔。 時間間隔有4個部分,每部分將在上一部分完成後繼續。帶按鈕播放,暫停和重置的AS3定時器間隔

條:

  • 部分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節開始回來。

目前,我已經創建了間隔,但是,當涉及到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

你能做到這一點很好地使用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];