Таймер обратного отсчета Actionscript 3 не отображает время в текстовом поле И ничего не происходит, когда таймер достигает 0

Я создал игру в 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--;
    }
}

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

РЕДАКТИРОВАТЬ:

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

    }
}

person RapsFan1981    schedule 24.01.2011    source источник
comment
Вы уверены, что таймер существует, когда вы устанавливаете значение?   -  person zzzzBov    schedule 24.01.2011
comment
в вашей программе есть опечатка: if(fl_SecondsToCountDown == 0){;, также ваше текстовое поле не будет обновляться при изменении переменной fl_SecondsToCountDown.   -  person Chunky Chunk    schedule 24.01.2011
comment
Это была не опечатка, а ошибка копирования/вставки :) Спасибо. fl_SecondsToCountDown сработал. Мне пришлось переместить его размещение, и мне пришлось воссоздать текстовое поле. учебник, которому я следовал для AS2, сказал, что нужно преобразовать текстовое поле в mc. оставить его как текстовое поле было правильным решением.   -  person RapsFan1981    schedule 24.01.2011


Ответы (1)


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

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

person zeh    schedule 24.01.2011
comment
Спасибо, я получил таймер для отображения. Мне не удалось запустить проверку обратного отсчета. Я добавил то, что я считаю чеками, о которых вы говорили. Трассировка (работает) не выполнялась повторно - person RapsFan1981; 24.01.2011
comment
Догадаться. На самом деле таймер никогда не достигает 0, он останавливается через 1 с. Я изменил оператор if на if(time == 1){...gotoAndStop(...); - person RapsFan1981; 26.01.2011