Javascript 使用Node.JS实时绘制图形

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不是我想要的那样。 我希望我已经讲清楚了。如果没有,请告诉我 非常感谢。

我对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});
}