2013-05-05 24 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(); 
      } 
} 

的問題是「年齡」和「加計數器」變量是全球性的,如果我把他們一個「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事件處理程序中,只需將需要發生的事情放在計時器上即可。