2012-02-20 52 views
0

我正在做一個遊戲,我必須有一些像武器和人物的對象,我最終想要得到視覺上的精靈或動畫片段我應該合併一個對象模型與精靈或做一個引用

我應該寫爲對象的邏輯幾類,然後對對象的引用在精靈類像下面這樣:

public class WeaponModel 
{ 

    public damage:Int = 8; 

    public function Weapon(){ 
     //Do the constructor code 
    } 

    public function get damage():int{ 
     return this.damage; 
    } 
} 

public class WeaponSprite extends Sprite 
{ 

    var weaponModel:WeaponModel; 

    public function WeaponSprite(weaponModel:WeaponModel){ 
     this.weaponModel = weaponModel; 
    } 
public function get weaponModel():WeaponModel{ 
     return this._weaponModel; 
    } 
} 

,然後當我需要做的損壞只需調用WeaponSprite的方法weaponModel()當我需要訪問這些方法時,或者我應該將它們合併成一個類。

回答

0

我會避免將對模型的引用傳遞給視圖。更解耦的方法是將模型ID傳遞給視圖。通過getter提供對模型ID的訪問。一般而言,您希望將模型知識保留在模型之外的觀點和視圖知識之外。

下面是控制器類如何管理視圖和模型之間關係的示例。

class View 
{ 
    public function View(modelId:int) 
    { 
     this._id = modelId; 
    } 

    public function get modelId():int { return this._id; } 

    protected function doSomething():void 
    { 
     dispatchEvent(new Event(Event.DOING_SOMETHING)); 
    } 
} 

class Controller 
{ 
    function init() 
    { 
     for each(model in models) 
     { 
      var view = new View(model.id); 
      view.addEventListener(Event.DOING_SOMETHING, onViewDoingSomething); 
     } 
    } 

    protected function onViewDoingSomething(event:Event):void 
    { 
     if(event.target is View) 
     var view:View = event.target as View; 
     // -- do something with view.modelId here 
    } 
} 

需要考慮的另一件事是您正在構建的應用程序有多大,以及有多少人正在開發它。在構建快速原型時,您可能不會關注遵循嚴格的OOP模式。但是,項目越大越複雜,框架或特定設計模式對您來說就越有可能。

如果您有興趣學習一個有助於設計的一致性和靈活性的框架,consider looking at Robot Legs

+0

你是什麼意思將模型ID傳遞給視圖。我會從中得到什麼?我不打算在這款遊戲中使用MVC。我簡直無法找到一個體面的教程,關於如何在Flash中使用MVC進行遊戲。 – chrs 2012-02-20 20:20:29

+0

MVC是一個很好的模式,可用於遊戲菜單和所有遊戲*,但遊戲本身*。因此,查看RobotLegs是一個很好的框架,這可能不是一個壞主意。 – weltraumpirat 2012-02-20 21:48:48

相關問題