socket.io 的命名数组
Named arrays with socket.io
所以我正在创建一个多人游戏,我使用 io.emit 命令定期向客户端发送包含数据数组的更新。
setInterval(function(){
io.emit("sendBlocks", blocksClient);
io.emit("sendMoreBlocks",test);
}, 100);
blocksClient 是一个普通数组。
而 test 是一个命名数组。
blocksClient = [{ posX: 0, posY: 0, solid: false },
{ posX: 1, posY: 0, solid: false },
{ posX: 2, posY: 0, solid: false },]
test = [ block1: { posX: 1, posY: 5 }, block2: { posX: 35, posY: 42 } ]
blocksClient 变量在到达客户端时将完全正常工作。
而测试变量到达时将完全为空。
有人知道为什么以及可以做什么吗?感谢您的帮助:)
那是因为javascript里面没有"named arrays",它们其实是有属性的对象,应该是这样的:
{ block1: { posX: 1, posY: 5 }, block2: { posX: 35, posY: 42 } }
所以我正在创建一个多人游戏,我使用 io.emit 命令定期向客户端发送包含数据数组的更新。
setInterval(function(){
io.emit("sendBlocks", blocksClient);
io.emit("sendMoreBlocks",test);
}, 100);
blocksClient 是一个普通数组。 而 test 是一个命名数组。
blocksClient = [{ posX: 0, posY: 0, solid: false },
{ posX: 1, posY: 0, solid: false },
{ posX: 2, posY: 0, solid: false },]
test = [ block1: { posX: 1, posY: 5 }, block2: { posX: 35, posY: 42 } ]
blocksClient 变量在到达客户端时将完全正常工作。 而测试变量到达时将完全为空。
有人知道为什么以及可以做什么吗?感谢您的帮助:)
那是因为javascript里面没有"named arrays",它们其实是有属性的对象,应该是这样的:
{ block1: { posX: 1, posY: 5 }, block2: { posX: 35, posY: 42 } }