2012-03-24 72 views
0

添加或刪除時我有一個計時器腳本:從倒計時

import flash.utils.Timer; 
import flash.events.TimerEvent; 

var secs:Number = 30;//second 
var mins:Number = 2;//minute 
var sec_t:String; 
var min_t:String; 

var my_timer:Timer = new Timer(1000); 
my_timer.addEventListener(TimerEvent.TIMER, timerHandler); 
my_timer.start(); 
showTimer.text = "02:30"; 

function timerHandler(event:TimerEvent):void 
{ 
    if (secs == 0) 
    { 
     if (mins == 0) 
     { 
      my_timer.stop(); 
      trace("Countdown is finished."); 
      showTimer.text =String(min_t+sec_t)+" Times Up"; 
      return; 
     } 
     else 
     { 
      --mins; 
      secs = 59; 
     } 
    } 
    else 
    { 
     --secs; 
    } 
    sec_t = (secs < 10) ? "0" + String(secs):String(secs); 
    min_t = (mins < 10) ? "0" + String(mins) + ":":String(mins) + ":"; 
    trace(min_t+sec_t); 
    showTimer.text =String(min_t+sec_t); 
} 

wrongBtn.addEventListener(MouseEvent.CLICK, wrongClick); 
function wrongClick(event:MouseEvent):void 
{ 
    secs = secs - 10; 
} 

correctBtn.addEventListener(MouseEvent.CLICK, correctClick); 
function correctClick(event:MouseEvent):void 
{ 
    secs = secs + 10; 
} 

有兩個按鈕,wrongBtncorrectBtnwrongBtn會減少時間10秒,correctBtn會增加10秒時間。 但是,當計時器秒數在2:05左右時,我按wrongBtn,時間顯示不正確,如下所示:「2:0-5」。同樣,當時間大約在2:55時,我按correctBtn,時間將顯示爲「2:65」...

如何獲得此工作,以便輸出正確顯示?

回答

5

保持一個計時器而不是單獨的分鐘和秒。您可以安全地增加和減少它,並始終保持正確的時間。爲了使其可讀,只需格式化輸出:

import flash.events.TimerEvent; 
import flash.utils.Timer; 


var timeRemaining:int = 150; // 150 seconds => 2:30 mins 

showTime.text = formatTimeRemaining(); 

var timer : Timer = new Timer (1000); 
timer.addEventListener (TimerEvent.TIMER, onTimer); 
timer.start(); 


function onTimer (ev:TimerEvent) : void { 
    timeRemaining--; 
    if (timeRemaining < 0) { 
     timeRemaining = 0; 
     loseGame(); 
    } 
    else 
     showTime.text = formatTimeRemaining(); 
} 

function formatTimeRemaining() : String { 
    var mins : int = int (timeRemaining/60); 
    var minstr : String = mins < 10 ? "0"+mins : ""+mins; 
    var secs : int = timeRemaining % 60; 
    var secstr : String = secs < 10 ? "0"+secs : ""+secs; 

    return minstr+":"+secstr; 
} 

function loseGame() : void { 
    timer.stop(); 
    trace("Countdown is finished."); 
    showTime.text = formatTimeRemaining() + (" Time's Up!"); 
} 

wrongBtn.addEventListener(MouseEvent.CLICK, wrongClick); 
function wrongClick(event:MouseEvent):void 
{ 
    timeRemaining -= 10; 
} 

correctBtn.addEventListener(MouseEvent.CLICK, correctClick); 
function correctClick(event:MouseEvent):void 
{ 
    timeRemaining += 10; 
}