Java Graphics2D无法序列化
爪哇: 如何序列化图形2D?我正在制作一个platformer游戏,我想要一个使用序列化的保存/加载系统Java Graphics2D无法序列化,java,Java,爪哇: 如何序列化图形2D?我正在制作一个platformer游戏,我想要一个使用序列化的保存/加载系统 java.io.NotSerializableException: sun.java2d.SunGraphics2D 它将打印此异常。有没有办法序列化图形2D 否,Graphics2D(以及处理图形、声音或网络的其他类)的实例通常不可序列化。您应该尝试将需要保存的数据与处理渲染的代码分开 如果不可能,则应将Graphics2D字段标记为transient。这样,在保存时,序列化系统
java.io.NotSerializableException: sun.java2d.SunGraphics2D
它将打印此异常。有没有办法序列化图形2D 否,
Graphics2D
(以及处理图形、声音或网络的其他类)的实例通常不可序列化。您应该尝试将需要保存的数据与处理渲染的代码分开
如果不可能,则应将Graphics2D
字段标记为transient
。这样,在保存时,序列化系统将跳过Graphics2D
字段。加载后,您可以将Graphics2D
字段设置为手动创建的新实例。否,Graphics2D
(以及处理图形、声音或网络的其他类)的实例通常不可序列化。您应该尝试将需要保存的数据与处理渲染的代码分开
如果不可能,则应将Graphics2D
字段标记为transient
。这样,在保存时,序列化系统将跳过Graphics2D
字段。加载后,您可以将Graphics2D
字段设置为手动创建的新实例。您是否尝试过使用createGraphics()
而不是getGraphics()
getGraphics()
是为了向后兼容而维护的,但不建议使用它您是否尝试过使用createGraphics()
而不是getGraphics()
getGraphics()
是为了向后兼容而维护的,但不建议使用它我应该把它放在哪里?在to=He之前,您将transient
放在您正在序列化的类中类型Graphics2D
字段的定义中。private void init(){image=new BufferedImage(WIDTH,HEIGHT,BufferedImage.type_INT_RGB);g=(Graphics2D)image.getGraphics();running=true;rms=new RoomManager(this)}这会产生一个错误,表示图像不可序列化。我已将其标记为瞬态…必须将image
和g
标记为transient
。此外,您还应确保RoomManager没有任何不可序列化的字段(如直接引用图像
或g
)。对不起,我有另一个名为图像
的缓冲图像。我修好了。它现在可以工作了:)我应该把它放在哪里?在to=He之前,您将transient
放在您正在序列化的类中类型Graphics2D
字段的定义中。private void init(){image=new BufferedImage(WIDTH,HEIGHT,BufferedImage.type_INT_RGB);g=(Graphics2D)image.getGraphics();running=true;rms=new RoomManager(this)}这会产生一个错误,表示图像不可序列化。我已将其标记为瞬态…必须将image
和g
标记为transient
。此外,您还应确保RoomManager没有任何不可序列化的字段(如直接引用图像
或g
)。对不起,我有另一个名为图像
的缓冲图像。我修好了。现在可以了:)如果可以的话,你应该集中精力保存状态而不是对象。如果可以的话,你应该集中精力保存状态而不是对象。