Добавить или удалить время из обратного отсчета - PullRequest
0 голосов
/ 24 марта 2012

У меня есть скрипт таймера:

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

Есть две кнопки, wrongBtn и correctBtn. wrongBtn уменьшит время на 10 секунд, correctBtn увеличит время, добавив 10 секунд. Но когда секунда таймера около 2:05, и я нажимаю wrongBtn, время отображается неправильно, например: «2: 0-5». Аналогично, когда время около 2:55 и я нажимаю correctBtn, время будет отображаться как «2:65» ...

Как я могу заставить это работать, чтобы вывод отображался правильно?

1 Ответ

5 голосов
/ 24 марта 2012

Держите один счетчик таймера вместо отдельных минут и секунд.Вы можете безопасно увеличивать и уменьшать его и всегда сохранять правильное время.Чтобы сделать его читаемым, просто отформатируйте вывод:

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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...