【问题标题】:AS3 timer event causing troubleAS3 定时器事件导致问题
【发布时间】:2013-05-05 21:38:34
【问题描述】:

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

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”函数中,我不知道如何重新启动游戏。谢谢。

【问题讨论】:

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


    【解决方案1】:

    您已将计时器定义为迭代年龄的值,对吗?

    那么为什么不直接添加一个 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 事件处理程序中,只需将需要发生的事情放在计时器滴答上即可。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-26
      • 1970-01-01
      • 1970-01-01
      • 2013-01-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多