我应该将对象模型与精灵合并或作出参考

时间:2012-02-20 20:02:12

标签: flash

我正在制作一个游戏,我必须拥有武器和角色等物品,我最终希望将其视为精灵或电影剪辑

我应该在几个类中编写对象的逻辑,然后在sprite类中引用对象,如下所示:

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(),或者我应该将两者合并为一个类。?

1 个答案:

答案 0 :(得分: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