2011-05-28 56 views
0

Im從Java轉換到Flash/Actionscript和Im有點困難,因爲閃存具有與Java不同的「幀」,因此我的Flash代碼可能會寫入Flash遊戲循環(或引擎)。我應該在哪裏編寫我的Flash遊戲循環的代碼?

我能夠將循環放入Document類中,即使遊戲中有類似的遊戲菜單嗎?我沒有找到一種方法將它放在那裏,而不是在閃存應用程序開始時總是運行。

或者我應該只是把遊戲循環叫做每一幀?例如,第4幀將是第1級,所以引擎將在那裏被調用。第5幀將成爲第2級,並且在那裏稱爲不同的遊戲引擎實例。這有可能做到嗎?

由於「框架」,我只是有一個困難的時間。那麼,放置遊戲循環的最佳地點在哪裏?

謝謝!

回答

4

如果您是一位認真的Java工程師,您將很快學會避免框架的陷阱。在你的文檔類,你可以通過偵聽Event.ENTER_FRAME創建主遊戲循環:

package 
{ 
    import flash.display.Sprite; 
    import flash.events.Event; 

    public class DocumentClass extends Sprite 
    { 

     public function DocumentClass():void 
     { 
      init(); 
     } 

     private function init():void 
     { 
      addEventListener(Event.ENTER_FRAME, iterate); 
     } 

     private function iterate(event:Event):void 
     { 
      // loop here 
     } 

    } 
} 

您可以停止循環同樣被刪除事件偵聽器。

對於更復雜的遊戲,人們通常需要創建多個ENTER_FRAME偵聽器。在這種情況下,使用「播報器」或其他一些可以最大限度地減少播放器事件結構數量的設備通常會更高效。

希望這有助於 亞歷克

0

你也可以使用一個定時器,其優點是,你可以爲你的電影中的低幀率,以及更高的定時器間隔,那麼,如果你發現你需要重繪屏幕的某個部分,您可以調用e.updateAfterEvent()或忽略它。你可以通過這種方式獲得性能,儘管你可能不需要它的好處並且會讓你的遊戲變得更加複雜。

0

例如,第4幀將是第1級,因此引擎將在那裏被調用。第5幀將成爲第2級,並且在那裏稱爲不同的遊戲引擎實例。

這是可能的,但我認爲,特別是如果您來自Java,您應該儘量避免將代碼放在Flash中的幀上,或者甚至將Flash用作開發環境。 這真的不適合嚴肅的編程。
Flash Builder更適合開發人員,並且基於Eclipse可能對您更爲熟悉。

在Flash中編寫時間軸上的幀代碼非常麻煩,您將很難調試,甚至發現*#@?你的代碼是當你需要改變某些東西的時候。

相關問題