2013-03-05 203 views
0

好的。我有一個關於AS3遊戲結構的問題。如何構建簡單的射擊遊戲。遊戲結構設計

我有一個主要的英雄和船隻射擊bulets。我想添加兩個級別,但我不知道如何正確地構造它們或者哪種方式是正確的。

我有一個主要的類,包含一切,並應該切換低谷級別。所以我把每個級別作爲一個單獨的班級分開。

示例代碼

package 
{ 
    // imports 

    public class Main extends Sprite 
    { 
     // properties 
     private var testLevel:Level1; 

     public function Main():void 
     { 
    if (stage) init(); 
    else addEventListener(Event.ADDED_TO_STAGE, init); 
    } 

     private function init(e:Event = null):void 
    { 
      testLevel = new Level1(); 
      addChild(testLevel); 
     } 
    } 
} 

// Level1 code 
package Levels 
{ 
    // imports 
    public class Level1 extends Sprite 
{ 
     // properties 
     private var ship:Ship; 

     public function Level1(stage:Object) 
    { 
      // do some stuff 
      addEventListener(Event.ENTER_FRAME, onEnterFrame); 
     } 

     public function onEnterFrame(e:Event):void 
    { 
       // do some stuff 
     } 

    } 
} 

所以,根據這個代碼,我的問題是:我應該使用內船舶單獨ENTER_FRAME功能加上船子彈或者我應該將它們添加在一級循環?

我可以做到兩種方式,但是對於性能和表達更好,因爲我打算在bulet達到sceen的末尾或者命中Hero時添加一些動作。

回答

3

這是一個雖然妥協:

  • 對於性能最好是有一個單一的ENTER_FRAME監聽器。

  • 但對於維護應當最好有船舶類內部和遊戲中的每個對象(例如,敵類,子彈類等)內單獨的更新功能。

所以平時對付這一點,並獲得最佳的兩個選項的首選方法是對你的主類,它通常被稱爲主遊戲循環一個主ENTER_FRAME監聽器。這應該是遊戲中唯一運行的ENTER_FRAME偵聽器。在此遊戲循環中,您應該爲當前遊戲中的每個對象調用一個更新函數,該函數負責更新遊戲中對象的位置,狀態等。

1

從我的意見 - 製作一個關卡引擎,用xml描述一個關卡,而不是爲每個關卡創建一個關卡。 製作一個拍攝引擎,其中包含bulletes並更新tham。使碰撞發動機檢查大小。 一個很好的例子就是廢物侵入者的代碼。 link 檢查src/com/shooty /引擎代碼,這對你有很大的幫助。

+0

非常有幫助,thanx – Vlad 2013-03-06 18:44:58