2012-02-20 3 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

+0

MVC는 게임 메뉴 및 모든 게임에 사용하기 좋은 패턴이지만 게임 자체는 *입니다. RobotLegs를 살펴 보는 것은 좋은 생각이 아닙니다. RobotLegs는 훌륭한 프레임 워크입니다. – weltraumpirat

관련 문제