2012-02-20 5 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()を呼び出すか、2つを1つのクラスにまとめてマージする必要があります。

答えて

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 
    } 
} 

また、考慮する必要があるもう1つのアプリケーションは、作成するアプリケーションの規模とその上で作業する人の数です。クイックプロトタイプを構築するときは、厳密なOOPパターンに従うことに心配する必要はありません。しかし、プロジェクトがますます大きく複雑になればなるほど、フレームワークや特定のデザインパターンが貴重なものになる可能性が高くなります。

一貫性と柔軟性のあるデザインを容易にするフレームワークの学習に興味がある場合は、consider looking at Robot Legs

+0

モデルIDをビューに渡すとどういう意味ですか?私はそれから何を得るでしょうか?私はこのゲームにMVCを使用する予定はありません。私は、FlashでゲームにMVCを使用する方法について、まともなチュートリアルを見つけることができません。 – chrs

+0

MVCは、ゲームメニューやゲームそのもの*に使用するのに適したパターンです。 RobotLegsを見るのは悪い考えではないでしょう。これは素晴らしいフレームワークです。 – weltraumpirat

関連する問題