AS3定时器事件导致故障

时间:2013-05-05 21:38:34

标签: actionscript-3 variables timer restart argument-passing

我正在创建一个使用定时器设置为随机数的游戏。计时器计数到这个数字然后游戏结束。我希望玩家在计时器用完后可以选择重播,但我无法确定如何执行此操作。这就是现在的样子。

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

问题是“age”和“upCounter”变量是全局的,如果我把它们放在“startGame”函数中,我就不能将它们传递给“timerHandler”。如果我不把它们放在“startGame”函数中,我不知道如何重启游戏。感谢。

1 个答案:

答案 0 :(得分: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事件处理程序中,只需将需要发生的事情放在计时器上。