Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript HTML5画布游戏玩家限制_Javascript_Node.js_Socket.io_Html5 Canvas - Fatal编程技术网

Javascript HTML5画布游戏玩家限制

Javascript HTML5画布游戏玩家限制,javascript,node.js,socket.io,html5-canvas,Javascript,Node.js,Socket.io,Html5 Canvas,我在画布上放置了1000名球员,但他们的动作并不流畅。canvas有办法处理这么多玩家吗?我有什么选择 使用socket.IO每秒发送20次玩家的位置。当事件到达客户端时,它会在画布上绘制玩家 var images = {}; images.spriteSheet = new Image(); images.spriteSheet.src = "/images/spriteSheet.png"; socket.on('drawing', function(data){ ctx.clear

我在画布上放置了1000名球员,但他们的动作并不流畅。canvas有办法处理这么多玩家吗?我有什么选择

使用socket.IO每秒发送20次玩家的位置。当事件到达客户端时,它会在画布上绘制玩家

var images = {};
images.spriteSheet = new Image();
images.spriteSheet.src = "/images/spriteSheet.png";

socket.on('drawing', function(data){

  ctx.clearRect(0,0,1000,500);

  for(var i = 0; i < data.length; i++){

    ctx.drawImage(images['spriteSheet'], data[i].sx, data[i].sy, 100, 100, data[i].x, data[i].y, 70, 70);

  }

});
var-images={};
images.spriteSheet=新图像();
images.spriteSheet.src=“/images/spriteSheet.png”;
socket.on('drawing',函数(数据){
ctx.clearRect(0,01000500);
对于(变量i=0;i
我在画布上放置了1000名球员,但他们的动作并不流畅。canvas有办法处理这么多玩家吗

我想你的意思是你在画布上画1000个精灵,每秒20次。毫无疑问,这将是艰难的

使用socket.IO每秒发送20次玩家的位置

当然,您可以发送一个位置和向量,让客户机按帧进行本地更新,直到下一次真正的更新。几乎所有其他游戏都是这样工作的,这是有原因的。这种每秒可以获取20次数据的想法并不总是如此


没有更多的细节,很难给出具体的答案,但在一般情况下,我建议研究SVG。然后,您可以更新单个元素,让浏览器担心合成和其他问题,这可能比您在画布中完成的要快。不过,您必须针对特定的用例进行实验。

SVG在渲染大型对象时速度更快,但在渲染多个对象时速度较慢。在Canvas中游戏可能会更快。@Suron这完全取决于你想做什么,而且你在问题中几乎没有提供任何相关细节。谢谢你的帮助,但现在Canvas可以处理这么多对象,我不知道为什么它之前不起作用。我想删除这个问题,因为它没有意义,但我不能,因为它有答案。@SurSur现在对你来说可能没有意义,但对以后可能找到它的其他人来说不是没有意义。这就是堆栈溢出的主要目的。。。提出与你和其他人相关的问题,并获得你的问题的答案,这对以后的其他人也有帮助。