2016-04-24 64 views
0

我正在設計使用Swing GUI和MVC方法的遊戲。我正在嘗試將保存和加載功能添加到我的遊戲GUI。但視圖不能被序列化。所以我用瞬態在我的Controller中定義它的實例變量。但是當我加載它時,遊戲不會加載視圖,所以我得到Nullpointerexceptions,因爲我在GUI中調用遊戲視圖的實例變量。有沒有解決方案?如何序列化遊戲視圖

+2

你不應該序列化視圖,但應該序列化遊戲的狀態。 – randominstanceOfLivingThing

+0

我會序列化遊戲狀態,但根據遊戲狀態,我使用控制視圖,這導致我使用控制器中的視圖,並再次爲空指針 –

+0

爲了更快地獲得更好的幫助,請發佈[MCVE]或[Short,Self Contained ,正確示例](http://www.sscce.org/)。 –

回答

0

您不應該序列化視圖,而應該序列化遊戲狀態。您必須使視圖transient避免序列化。

當我做系列化平時我有兩個構造函數:

1)不,我認爲當說我創建一個新的遊戲中使用任何參數的構造函數之一。我用一種單獨的方法初始化我的視圖。

Game() { 
    initializeView(); 
} 

2)第二個帶狀態參數的構造函數,當我說我繼續一個遊戲時我會考慮使用它。我用一種單獨的方法初始化我的視圖。

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

我確實使它瞬變,我做序列化的狀態,但我得到空指針 –

+0

如果我初始化視圖它將成爲一個空視圖,因爲我添加視圖中的每個元素使用控制器添加動作偵聽器到它 –

+0

Did技術工作? – randominstanceOfLivingThing