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

二つのボタン、wrongBtncorrectBtnがあります。 wrongBtnは時間を10秒短縮します。correctBtnは10秒を追加して時間を増加させます。 しかし、タイマ秒が2:05頃で、wrongBtnを押すと、「2:0-5」のように時間が正しく表示されません。同様に、時間が2:55頃で、correctBtnを押すと、時間は "2:65"と表示されます...

出力が正しく表示されるように、これをどのようにすることができますか?

答えて

5

別々の分と秒ではなく、1つのタイマーカウントを保持します。安全に増減することができ、常に正しい時間を保つことができます。読み込み可能にするには、出力をフォーマットしてください:

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; 
} 
関連する問題