2013-02-26 137 views
0
var lastRecordedTime:Number = getTimer(); 
while(getTimer()>lastRecordedTime+10000) 
{ 

} 

我想讓我的遊戲處於等待狀態。我應該像這樣使用while循環,還是有更高性能的方式來執行此操作?使用while循環等待?

+0

您標記爲Java,但此代碼看起來不像Java。 – rgettman 2013-02-26 22:43:46

+0

@rgettman Java與AS3非常相似,而Java中的循環應該相同,對吧? – 2013-02-26 22:44:30

+1

從語言到語言,循環可以非常相似,但是例如Java具有'Thread.sleep'來等待特定數量的毫秒而沒有while循環。 – rgettman 2013-02-26 22:45:40

回答

6

絕對不要在AS3中使用這種方法。 AS3有一個嚴重的缺點,即它不支持多線程。只要該計時器繼續運行,就會使程序完全崩潰,如果用戶不斷嘗試點擊它或某物,Windows 7尤其會嚇倒。

試試這個:

private var m_tmr:Timer = new Timer(10000, 1); 

. 
. 
. 

private function func():void 
{ 
    . 
    . 
    . 
    m_tmr.addEventListener(TimerEvent.TIMER, tick); 
    m_tmr.start(); 
} 

private function tick(pEvent:TimerEvent):void 
{ 
    // pick back up in here 
} 

關於這個問題的唯一的事情是,它是異步的,所以你可能需要增加一些特別的邏輯來忽略某些類型的同時事件之類的東西,這取決於你」重新努力完成。但是使用while循環來休眠線程並不會在AS3中發揮作用。

+1

我同意w /答案,但也許「thrashes」是單詞的更好選擇,而不是「崩潰」;)因爲我們在Flash中編寫的代碼是單線程的(除了新的Actionscript工作者),while循環將只是綁定唯一的線程,並應該讓所有瀏覽器最終抱怨,如果它被綁得太久。 – 2013-02-26 23:23:33