Javascript 使用Node.JS实时绘制图形
我对Node JS和Socket.IO不熟悉,对JS也几乎不熟悉。。。我正在尝试制作一个迷你多人游戏,只是为了学习。我在服务器上对玩家的位置进行所有处理,并将所有位置传递给每个客户端,以便每个客户端在浏览器中生成所有图形 在服务器端,我有以下几点: 用这个,我每100毫秒发送一次所有球员的位置 然后在客户端: 这会在开始时生成每个玩家的图表,效果很好 我的问题是,这里它说这没有方法ATTR。好像object.graph不是我想要的那样。 我希望我已经讲清楚了。如果没有,请告诉我Javascript 使用Node.JS实时绘制图形,javascript,node.js,graphics,raphael,socket.io,Javascript,Node.js,Graphics,Raphael,Socket.io,我对Node JS和Socket.IO不熟悉,对JS也几乎不熟悉。。。我正在尝试制作一个迷你多人游戏,只是为了学习。我在服务器上对玩家的位置进行所有处理,并将所有位置传递给每个客户端,以便每个客户端在浏览器中生成所有图形 在服务器端,我有以下几点: 用这个,我每100毫秒发送一次所有球员的位置 然后在客户端: 这会在开始时生成每个玩家的图表,效果很好 我的问题是,这里它说这没有方法ATTR。好像object.graph不是我想要的那样。 我希望我已经讲清楚了。如果没有,请告诉我 非常感谢。
非常感谢。您的问题有点不清楚,但我想您是想通过socket.io传递整个raphael对象
socket.on('new_data', function(players){
// here players is just a plain object without any methods
}
只需在浏览器中创建一个console.logplayers,您就会看到发生了什么。
几行代码,我希望这会给你一个想法
var local_players = [] // < store your clientside players and the raphael objects
socket.on('new_data', function(playerdata){
//for every player data recieved update your local players data..
for(var i in playerdata)
local_players[i].attr({cx : playerdata[i].x , playerdata[i].y});
}
您还必须确保每个玩家都能获得自己的玩家数据,因此,如果玩家数据中的id相同,请为每个玩家提供一个唯一的id,并更新玩家位置。在您的第一段客户端代码中,玩家来自哪里?当您获取套接字事件时,浏览器调试器中的玩家是什么样子的?@ebohlman我使用对象players[I]的console.log。它是一个对象,带有属性。。。所以我不明白为什么它说它没有attr方法。
socket.on('new_data', function(players){
for (i in players){
players[i].graph = players[i].graph.attr({cx : players[i].x , cy:players[i].y});
}
socket.on('new_data', function(players){
// here players is just a plain object without any methods
}
var local_players = [] // < store your clientside players and the raphael objects
socket.on('new_data', function(playerdata){
//for every player data recieved update your local players data..
for(var i in playerdata)
local_players[i].attr({cx : playerdata[i].x , playerdata[i].y});
}