0

Android のもぐらたたきゲームで MVC パターンを作成しようとしています。

内部クラスのスレッドを介してモデル内にモグラの位置を生成していますが、最終的にはそれをビューに渡して、そのスプライトを生成したいと考えています。

ビューがモデルから生成されたモルの位置を継続的に受け取る方法を作成するにはどうすればよいですか?

以下のコードを編集して、それらの背後にある本質を捉えました。

モデル :

public class GameModel{
   public GameModel(){
      spawner = new MoleSpawner();
      spawner.start();
   }
.
.
.
   private class MoleSpawner extends Thread{
      private int location;
      public void run() {
          location = new Random().nextInt(20);
          try{
             sleep (1000);
          } catch (InterruptedException ex){
             ex.printStackTrace();
          }
      }
   }
}

見る:

public GameView{
.
.
.
  public void createMoleSprite(int newlocation){
     //create sprites here
     //newlocation should come from the MODEL
     //this method must be triggered everytime the MODEL creates a new location
  }
}
4

1 に答える 1

1

これを実装する方法の 1 つは、ハンドラーを使用することです。

より複雑になる可能性がありますが、これを実装する方法の簡単な例を示します。

ゲームが実行されているアクティビティで、次を使用してハンドラーを取得します

Handler mHandler = new Handler();

次に、モデルをインスタンス化するときに、mHandler オブジェクトとアクティビティへの参照を渡します。モデルで、新しいほくろを生成する必要があるときはいつでも、

 mHandler.post(new Runnable() {

   gameActivity.spawnNewMoleAt(location);


 });

これは、特にほくろが動的に生成される速度を制御する場合、より複雑になる可能性がありますが、これに基づいて構築することができます。

Handlers HEREに関する優れたチュートリアルを見つけることができます。

于 2012-10-03T13:34:41.173 に答える