2013-02-14 43 views
0

好的,所以我對AS3相當新,而且在我的遊戲中有一個關卡,你必須活着45秒。如果我使用像一個代碼(或者,如果有一個更好的代碼,我將使用一個)需要幫助在動作腳本中使用一個定時器3

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

我如何可以用它來使我的遊戲動作場景6,如果他們活着45秒?我也想在動畫上顯示文字,記錄他們活着多久,以便知道他們離開了多久。我怎麼能做到這一點?

回答

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開始遊戲。

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