0

私は現在、スターリング フレームワークを使用してフラッシュでゲームを実行しています。しかし、私はゲームのアーキテクチャに不慣れで、ゲームでここで行ったことはあまり良くないと思います。

ステージにコンテンツを表示するために使用される Screen クラスがあります。

public class Screen {
    private var button : Button
    private var controller : Controller

    public function Screen(){
       controller = new Controller(button)
    }
}

public class Button{
    private var controller : Controller
    private var button: Button

    public function Button(){
       button.addEventListener(Event.TRIGGERED, onTrigger)
    }

    private function onTrigger(e:Event){
       controller.notify(buttonTriggered);
    }
}
//in the controller class, I have a list of controller which controls other components 
//those are added to Screen class (character, ...) 
public class Controller{
   public function Controller(button){

   }

   public function notify(event){
      switch(event){
         //notify to other controller with this event
      }
   }
}

このアーキテクチャに関する提案はありますか。フィードバックをお寄せいただき、誠にありがとうございます。

4

2 に答える 2

1

gazman-sdk.comで画面用の優れたソリューションを作成しています。

画面のメカニズムについて考えるとき、その主なタスクは次のとおりです。

  • 画面スタックの管理
  • スタックの変更を画面に通知する:
    • on resume画面がスタックの一番上に到達したときに呼び出す
    • on pause画面がスタックの一番上になくなったときに呼び出す
    • そしてon create、画面が作成されdisposeたときと画面が破棄されたときに呼び出します。
  • また、何らかの方法で画面ロジックを画面内にカプセル化する必要があります。したがって、コードには次のような行はありません: opneScreen(new GameScreen());. このメソッドを呼び出すクラスは誰であるかを知ってGameScreenおり、これを避けたいからです。
  • 最後に、スクリーン メカニズムが起動して実行されているときは、ポップアップ用に別の同一のメカニズムを作成したくありません。ほとんど同じだからです。

Multiton patternを使用してソリューションを構築します。これには、ポップアップとスクリーンの両方に使用されるスクリーン スタック モデルのマルチ表現があります。各画面はカプセル化されており、システム イベントをリッスンして開始および終了します。

残念ながら、そのための完全なチュートリアルはまだ作成していません。私がするとき、それはここで公開されます。Component Explorer プロジェクトでこのメカニズムの実行例をどのように実行したか。ソースコードはgithubにあります。ここでのライブ例。

私はこのサイトで常に活動しているので、プロジェクトに実装することを選択した場合、途中で発生する質問についてお手伝いできます.

乾杯と幸運。

于 2014-03-27T08:34:07.867 に答える
0

ボタンクラスに関しては、マウスでクリックできるボタンが必要だと思います。その場合は、Event.TRIGGERED を MouseEvent.CLICK に変更し、onTrigger の e:Event パラメータを e:MouseEvent に変更する必要があります。その後、ボタンをクリックするたびに関数がトリガーされます。

于 2013-10-11T04:00:20.843 に答える