游戏中只显示最后一名玩家

问题描述

我正在尝试使用 HTML 制作一个简单的多人游戏,但我不知道如何解决显示 1 个玩家的问题。相关代码如下:

socket.on('newpos',function(data){
            var transform = ctx.getTransform();
            var camX,camY;
            for(var i = 0 ; i < data.player.length; i++){
              ctx.translate(camX,camY);
              ctx.setTransform(1,1,0);
              ctx.clearRect(0,10000,10000); 
              ctx.setTransform(transform);
              ctx.drawImage(background,10000); 
              ctx.setTransform(1,0);

              if(ID == data.player[i].id){ 
                 camX = -data.player[i].x + canvas.width / 2;
                 camY = -data.player[i].y + canvas.height / 2;
              }
              ctx.translate(camX,camY);
              ctx.drawImage(img,(data.player[i].x),(data.player[i].y),32,32);
});

这里的代码循环遍历服务器上的所有玩家。它绘制了不同玩家的视角,但只有最后加入的玩家可见。 我尝试过更改不同地方的变换以及我能想到的所有其他内容,但不知道该怎么做。

解决方法

那是因为你在每次迭代时都清除了整个画布,所以只有最后一个是可见的

取出/改变位置

ctx.clearRect(0,10000,10000)

此外,上面的代码现在应该会出现错误,因为它似乎缺少 for 循环的右括号

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...