2013-05-05 8 views
0

Я создаю игру, в которой используется таймер, установленный на случайное число. Таймер подсчитывает до этого числа, после чего игра заканчивается. Я хотел бы, чтобы у игрока была возможность повторного воспроизведения, как только таймер закончится, но у меня возникли проблемы с определением того, как это сделать. Вот как это выглядит сейчас.Событие таймера AS3, вызывающее проблемы

var age:int = Math.floor(Math.random()*100)+1; 
trace(age); 
var upCounter:int = 1; 
timer(); 

//timer 
function timer(){ 
var myTimer:Timer = new Timer(1000, age); 
myTimer.addEventListener("timer", timerHandler); 
myTimer.start(); 
} 

//displays timer and triggers outcome function 
function timerHandler(event:TimerEvent):void{ 
    if (upCounter < age) { 
      trace(upCounter); 
      age_txt.text = String(upCounter); 
      upCounter++; 
      } 
      else{ 
      outcome(); 
      } 
} 

Проблема в том, «возраст» и переменные «upCounter» являются глобальными, и если я их внутри функции «StartGame» Я не могу передать их в «timerHandler». Если я не помещаю их в функцию «startGame», я не знаю, как перезапустить игру. Благодарю.

ответ

0

Вы определили свой таймер как итерирование значения возраста, верно?

Почему бы не просто добавить событие TIMER_COMPLETE?

myTimer.addEventListener(TimerEvent.TIMER_COMPLETE, outcome); 

function outcome(e:TimerEvent):void 
{ 
    var myTimer:Timer = e.target as Timer; 
    myTimer.removeEventListener(TimerEvent.TIMER_COMPLETE, outcome); 

    // prompt to play again or whatever goes here. 
} 

В вашем обработчике событий TIMER просто поставьте вещи, которые должны произойти по таймеру.

Смежные вопросы