2012-03-24 18 views
0

Ich habe einen Timer-Skript:hinzufügen oder entfernen Zeit von einem Countdown

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; 
} 

Es gibt zwei Knöpfe, wrongBtn und correctBtn. wrongBtn verringert die Zeit um 10 Sekunden, correctBtn erhöht die Zeit um 10 Sekunden. Aber wenn die Timer-Sekunde um 2:05 Uhr ist und ich wrongBtn drücke, wird die Zeit falsch angezeigt, wie folgt: "2: 0-5". Ebenso, wenn die Zeit um 2:55 Uhr ist und ich die correctBtn drücke, wird die Zeit als "2:65" angezeigt ...

Wie kann ich das funktionieren, so dass die Ausgabe korrekt angezeigt wird?

Antwort

5

Halten Sie einen Timer Count statt separate Minuten und Sekunden. Sie können es sicher erhöhen und verringern und immer die richtige Zeit behalten. Um es lesbar zu machen, formatieren Sie einfach die Ausgabe:

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; 
} 
Verwandte Themen