2013-09-23 29 views
1

Java:Graphics2D無法序列化

如何序列化Graphics2D?我正在製作一款平臺遊戲,我想要一個使用序列化的保存/加載系統。

java.io.NotSerializableException: sun.java2d.SunGraphics2D 

它打印此例外。有什麼辦法可以序列化Graphics2D嗎?

+0

如果可以,您應該專注於保存狀態而不是對象。 – MadProgrammer

回答

5

不,Graphics2D(以及其他處理圖形,聲音或網絡的類)的實例通常不是Serializable。您應該嘗試從處理渲染的代碼中分離需要保存的數據。

如果這是不可能的,那麼你應該把你的Graphics2D字段標記爲transient。這樣,序列化系統在保存時跳過Graphics2D字段。加載後,您可以將Graphics2D字段設置爲您手動創建的新實例。

+0

我在哪裏放置瞬態?在他之前 – PQx

+0

您在要序列化的類中在'Graphics2D'類型字段的定義中放入'transient'。 – maksimov

+0

私人無效的init(){ \t \t \t 圖像0​​=新的BufferedImage( \t \t \t \t \t WIDTH,HEIGHT, \t \t \t \t \t BufferedImage.TYPE_INT_RGB \t \t \t \t); \t \t g =(Graphics2D)image.getGraphics(); \t \t \t \t running = true; \t \t \t \t rms = new RoomManager(this); \t \t \t} \t \t 這產生了一個錯誤,說圖像不seralizable。我已將它標記爲瞬態... – PQx

0

您是否試過使用createGraphics()而不是getGraphics()getGraphics()保持向後兼容性,但不建議使用它