2012-03-24 74 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; 
}