在Actionscript 3中使用计时器需要帮助

时间:2013-02-14 13:11:42

标签: actionscript-3 timer

好吧,所以我对AS3很新,我在游戏中有一个级别,你必须活着45秒。如果我使用类似的代码(或者如果有更好的代码,我将使用那个代码)

   var myTimer:Timer = new Timer(1000, 1); // 1 second
myTimer.addEventListener(TimerEvent.TIMER, runOnce);
myTimer.start();

function runOnce(event:TimerEvent):void {
trace("runOnce() called @ " + getTimer() + " ms");
}

如果他们活着45秒,我如何使用它来让我的游戏移动到场景6?我还想在动画上显示文字,记录他们活着多久,以便他们知道他们已经离开多久。我怎么能做到这一点?

2 个答案:

答案 0 :(得分:0)

private var startTime:int;
function startGame() {
    // this is called when your game starts
    startTime=getTimer();
    ... // rest of init code
} 
function onEnterFrame(e:Event):void {
    // main loop, whatever you need to do in here
    currentTime=getTimer()-startTime; // here we receive the elapsed time
    // pause handling is excluded from this example!!11
    if (weAreDead()) {
        survivalTime= currentTime;// here
        ...
    } else if (currentTime>45000) { 
        //advance to scene 6 here
    }
}

将Event.ENTER_FRAME的监听器设置为onEnterFrame,通过设置存储的时间开始游戏,然后进行pwn。

答案 1 :(得分:0)

最简单的解决方案是继续使用计时器,但将值设置为45000并确保保留计时器的引用,否则将进行垃圾回收。另外,创建一个单独的函数,允许你从任何地方杀死计时器,如果这个特殊的东西需要“离开”而不完成。

public static const DELAY:int = 45;
private var _timer:Timer;

public function setTimer():void
{
    _timer = new Timer( DELAY * 1000, 1 );
    _timer.addEventListener( TimerEvent.TIMER_COMPLETE, timerCompleteHandler );
    _timer.start();
}

private function timerCompleteHandler( event:TimerEvent ):void
{
    disposeTimer();
    goDoTheThingThatYouNeededToDo();
}

public function disposeTimer():void
{
    _timer.stop();
    _timer.removeEventListener( TimerEvent.TIMER_COMPLETE, timerCompleteHandler );
    _timer = null;
}