通过套接字发送javafx矩形/窗格

时间:2016-03-02 17:40:41

标签: java sockets javafx

我正在使用javafx开发一个小型游戏多人游戏。我有一个对象Map,它扩展了类AnchorPane。此映射包含一些“Tiles”,它扩展了Rectangle类。 Map和Tile类实现了Serializable。

我想要的是什么:

服务器创建地图,但不显示地图。每次玩家连接时,都会发送地图。

事情是我收到它后显示地图(客户端),它没有显示任何内容......每个瓷砖都在地图中,但它没有显示。

问题1:AnchorPane和Rectangle没有实现Serializable,这是为什么地图不显示任何东西?即使我使用实现Serializable的“自定义”对象?

问题2:更一般地说,这是实施多玩家方面的好方法吗?我的意思是,在每次操作后使用MapController发送映射的服务器是“更好”,还是每个客户端拥有自己的映射更好,服务器发送客户端执行的命令? (比如创建新玩家,移动玩家....)

1 个答案:

答案 0 :(得分:3)

  1. 由于问题中缺少代码,实际上无法回答,但任何可序列化的对象都会序列化聚合对象。如果这些对象不是来自实现可序列化的类,则会出现异常。你应该在某个地方看到异常,除非你正在挤压它们(即try { /* code */ } catch (IOException exc) { /* do nothing */}),这是非常糟糕的做法。
  2. 您应该通过流发送数据,而不是您对数据的查看。所以你应该有一个"模型"只是代表你需要的数据的类;如果要将对象序列化用作通信协议,则可以轻松地使其可序列化。保留客户端的视图类(即UI类),并在收到模型时使用模型中的数据更新它们。