0

好的,所以我对 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?我还想在动画上显示文本,记录他们活了多长时间,这样他们就知道他们还剩下多长时间了。我怎么能做到这一点?

4

2 回答 2

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。

于 2013-02-14T13:25:19.543 回答
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;
}
于 2013-02-14T20:45:07.887 回答