通过控制器将数据从模型传递到视图

时间:2012-10-03 13:25:43

标签: java android

我正在尝试在我的android whack-a-mole游戏中创建一个MVC模式。

我通过内部类线程在模型中生成mole位置,并希望最终将它传递给视图,以便为它生成一个sprite。

如何为我的视图创建一种方法,以便从我的模型中连续接收生成的痣位置?

我已经编辑了下面的代码,以捕捉它们背后的基本要素。

模特:

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
  }
}

1 个答案:

答案 0 :(得分:1)

实现此目的的一种方法是使用处理程序。

它可能更复杂,但我会举一个关于如何实现它的简单示例。

在运行游戏的Activity中,使用

获取Handler的Handler
Handler mHandler = new Handler();

然后,在实例化模型时,将mHandler对象以及对活动的引用传递给它。在你的模型中,每当你需要产生一个新的痣时,做

 mHandler.post(new Runnable() {

   gameActivity.spawnNewMoleAt(location);


 });

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

您可以找到关于处理程序HERE的好教程。