java - 如何为 Array<> 编写序列化器?

标签 java libgdx kryonet

我不知道如何解决这个问题。我需要为 Array<> 编写一个序列化器在 libgdx 中找到对象。

public static void initialize(Server server) {
    Kryo kryo = server.getKryo();
    kryo.register(ServerData.class);
    kryo.register(PlayerNick.class);
    kryo.register(MoveLeft.class);
    kryo.register(MoveRight.class);
    kryo.register(MoveUp.class);
    kryo.register(MoveDown.class);
    kryo.register(StandUp.class);
    kryo.register(ButtonLeft.class);
    kryo.register(ButtonRight.class);  
    //
    kryo.register(PlayerData.class);  
    kryo.register(Vector2.class);
    kryo.register(Array.class);  
    kryo.register(PlayerDataPacket.class);  
}
public static void initialize(Client client) {
    Kryo kryo = client.getKryo();
    kryo.register(ServerData.class);
    kryo.register(PlayerNick.class);
    kryo.register(MoveLeft.class);
    kryo.register(MoveRight.class);
    kryo.register(MoveUp.class);
    kryo.register(MoveDown.class);
    kryo.register(StandUp.class);
    kryo.register(ButtonLeft.class);
    kryo.register(ButtonRight.class); 
    //
    kryo.register(PlayerData.class);  
    kryo.register(Vector2.class);
    kryo.register(Array.class);  
    kryo.register(PlayerDataPacket.class);  
}
public static class PlayerData {
    public String name;
    public int id;
    public Vector2 position;
}

public static class PlayerDataPacket {
    public Array<PlayerData> playerList = new Array<PlayerData>();
}

这就是我通常的序列化的完成方式。在这里,我需要为 PlayerDataPacket 编写一个自定义序列化器.

我发现了这个:https://groups.google.com/forum/#!topic/kryonet-users/9z4Ix2JO7JA 但它似乎已经过时了,因为它找不到一些方法,而且它没有说明如何使用 Array<> 来做到这一点.

最佳答案

我在这里编写了一个使用 KryoNet 通过网络发送 float 组的示例:

https://stackoverflow.com/a/24339801/2413303

 Server server = new Server();
  Kryo kryo = server.getKryo();
  kryo.register(float[].class);
  server.start();
  server.bind(2300, 2301);
  server.addListener(new Listener() {
   public void received(Connection connection, Object object)
   {
      if(object instanceof float[])
      {
        float[] array = (float[])object;
        for(int i = 0; i < array.length; i++)
        {
           System.out.println("" + array[i]);
        }
      }        
   }});
  Client client = new Client();
  Kryo kryo = client.getKryo();
  kryo.register(float[].class);
  client.addListener(new Listener() {
    public void connected(Connection connection)
    {
       connection.sendTCP(new float[] {5, 6, 7, 8});
    }
  };
  client.connect(5000, "127.0.0.1”, 2300, 2301);

关于java - 如何为 Array<> 编写序列化器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27380369/

相关文章:

java - 连接 MySQL 数据库中的对象

java - Wicket session 未在 GAE 中保留

java - 如何在 Libgdx 中跟踪多个触摸事件?

libgdx - RoboVM 和 libgdx iOS 示例应用程序失败并显示 'Struct class must be final'

java - 补间引擎和 libgdx 的故障

java - Kryonet RMI,无法等待连接更新线程的响应

java - Java中的Mysql。如何实现高效的异步查询?

java - Kryonet 数据包未发送

java - 错误: User lacks privilege or object not found HSQLDB

java - If和Else If之间的区别?