如何序列化游戏视图

时间:2016-04-24 20:31:11

标签: java swing

我正在使用Swing GUI和MVC方法设计游戏。我正在尝试将保存和加载功能添加到我的游戏GUI中。但View无法序列化。所以我使用transient来在我的Controller中定义它的实例变量。但是当我加载它时,游戏不会加载视图,所以当我在GUI中调用游戏视图的实例变量时,我得到Nullpointerexceptions。对此有什么解决方案吗?

1 个答案:

答案 0 :(得分:0)

您不应序列化视图,但应序列化游戏状态。您必须创建视图transient以避免序列化。

当我进行序列化时,通常我有两个构造函数:

1)一个没有任何参数的构造函数,当我创建一个新游戏时,我考虑使用它。我用一个单独的方法初始化我的视图。

Game() {
  initializeView();
}   

2)第二个带状态参数的构造函数,我认为在继续游戏时会考虑使用它。我用一个单独的方法初始化我的视图。

Game(GameState state) {
  initializeView();
  //Restore game state here, I update GUI here
}