0

我正在尝试在我的 android whack-a-mole 游戏中创建一个 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

实现这一点的方法之一是使用处理程序。

它可能更复杂,但我会给你一个简单的例子来说明如何实现它。

在您的游戏正在运行的 Activity 中,通过使用获取它的 Handler

Handler mHandler = new Handler();

然后,当您实例化模型时,将 mHandler 对象以及对您的活动的引用传递给它。在您的模型中,每当您需要生成新的痣时,请执行

 mHandler.post(new Runnable() {

   gameActivity.spawnNewMoleAt(location);


 });

这可能会变得更加复杂,特别是如果您控制动态生成鼹鼠的速率,但您可以在此基础上进行构建。

你可以在这里找到关于处理程序的好教程。

于 2012-10-03T13:34:41.173 回答