Таймер обратного отсчета Actionscript 3 не будет отображать время в текстовом поле И ничего не происходит, когда таймер достигает 0 - PullRequest
0 голосов
/ 24 января 2011

Я создал игру в AS3, используя учебник, написанный для AS2, но не могу заставить работать таймер правильно. Игра содержит 3 кадра, стартовый экран, игровой цикл и конечный экран. таймер запускается на кадре 2 и начинает обратный отсчет (это проверено трассировкой). Когда таймер достигает 0, я хочу перейти к кадру 3, который является экраном конца игры, но мой код не работает.

var fl_SecondsToCountDown:Number = 30;

var fl_CountDownTimerInstance:Timer = new Timer(1000, fl_SecondsToCountDown);
fl_CountDownTimerInstance.addEventListener(TimerEvent.TIMER, fl_CountDownTimerHandler);
fl_CountDownTimerInstance.start();
theTimer.text = String(fl_SecondsToCountDown);

function fl_CountDownTimerHandler(event:TimerEvent):void
{

    if(fl_SecondsToCountDown == 0){;
        gotoAndPlay(3);
    }else{

    trace(fl_SecondsToCountDown + " seconds");
    fl_SecondsToCountDown--;
    }
}

Моя вторая проблема в том, что таймер (theTimer) не показывает время.

EDIT:

var running:Boolean = new Boolean();
running = false;
var time:Number = new Number();
var fl_SecondsToCountDown:Number = 30;
var fl_CountDownTimerInstance:Timer = new Timer(1000, fl_SecondsToCountDown);
fl_CountDownTimerInstance.addEventListener(TimerEvent.TIMER, fl_CountDownTimerHandler);
fl_CountDownTimerInstance.start();

function fl_CountDownTimerHandler(event:TimerEvent):void
{
    time=fl_SecondsToCountDown;

    if(time == 0){
        running = false;
        trace(running);
        gotoAndStop(3);
    }else{

    trace(fl_SecondsToCountDown + " seconds");
    fl_SecondsToCountDown--;
    theTimer.text = String(fl_SecondsToCountDown);

    }
}

1 Ответ

0 голосов
/ 24 января 2011

Убедитесь, что вы обновили theTimer внутри функции fl_CountDownTimerHandler, иначе она будет обновляться только при инициализации.

И я предполагаю, что ваша последняя проверка обратного отсчета не запускается, потому что она будетникогда не запускать событие снова, когда fl_SecondsToCountDown уже равно 0.Добавьте еще несколько проверок с помощью trace, и вам будет легче выяснить, что происходит.

...