【发布时间】:2019-11-06 23:00:53
【问题描述】:
我正在尝试创建一个多人游戏,如果大厅未满,主机有 AI 飞船,它们将动作发送到服务器,服务器将他们的“动作”广播到客户端游戏中的空白飞船。广播伴随着一个“i”,它是 AIShips 标识符,因此正确的船被告知在客户端游戏中移动。
以下是使用顺序的代码:
初始发射:(AIShip.java)
JSONObject data = new JSONObject();
try {
data.put("i", identifier); //Identifier is an int set once in the constructor
gameScreen.spaceSoccer.socket.emit("moveAIShipForward", data);
} catch (JSONException e){
e.printStackTrace();
}
我的服务器:(index.js)
socket.on("moveAIShipForward", function(i) {
socket.broadcast.emit("moveAIShipForward", {id: socket.id, i: i})
});
对广播的响应:(SpaceSoccer.java)
.on("moveAIShipForward", new Emitter.Listener() {
@Override
public void call(Object... args) {
JSONObject data = (JSONObject) args[0];
try {
int i = data.getInt("i"); //error
gameScreen.AIShip[i].moveBodyForward();
} catch (JSONException e) {
e.printStackTrace();
}
});
错误:W/System.err: org.json.JSONException: Value {"i":0} at i of type org.json.JSONObject cannot be convert to int W/System.err:在 org.json.JSON.typeMismatch(JSON.java:100)
【问题讨论】:
-
你登录
args[0]了吗?这个参数有什么内容?
标签: java node.js json socket.io