2011-08-12 82 views
0

我以前問過關於遊戲AS3和時間的問題,但沒有得到答案,所以試圖讓問題更加精確。最好的方式來計時遊戲

我正在製作類似於東方風格的遊戲來學習AS3,但是這個遊戲是按照音樂定時的。子彈模式,敵人產卵和特殊圖形都將在音樂中的特定時間發生。我想知道的是:

什麼是準確計時的許多(!)事件的最佳方式,要求它們非常準確,而且即使稍微不同步也不會滑倒?的

例什麼時機種類我要找: 小號 菌種在1:30分鐘5種不同類型的敵人年代,敵人在1:31 1發子彈模式開始,子彈模式將被定時擊敗這樣的重複圖案中的每個2秒。這是我想要得到的一個簡單和簡短的例子。

回答

0

對於對象和動畫時間,你應該聽ENTER_FRAME事件,然後獲取當前時間在毫秒:

var now:Date = new Date(); 
var timeInMilis:int = now.getTime(); 

,並檢查是否有物體需要移動,添加等基於該時間。

至於聲音計時,您可能會在ENTER_FRAME事件期間正常播放聲音。但是,閃存很容易給聲音添加延遲,這意味着在你調用.play()之後,它們不會總是立即播放(不會太多,以毫秒爲單位)。如果您需要超級精確的時序,則可能需要使用herehere中描述的技術來實現您自己的混音器。

祝你好運!

+0

這很有效,非常感謝。但是現在我有一個控制時間表的問題。我打算這樣做的方式是,當到達特定情況時(例如特定秒),它會在離開時運行30次,而我只希望它運行一次。無論如何要解決這個問題嗎?或者其他方式來製作時間表? – Babyrat

+0

將案件標記爲「觸發」或在您運行後發生了某些事情,以便您知道哪些內容可以跳過。 – kolufild