-1

不知道怎么回事 这个函数应该为数组中的每个名字放一个新玩家

function newplayer() {
var y = data.playerY;   
var x = data.playerX;

var player ="";
var players={name1:"Jao",name2:"lucas",name3:"pedro",name4:"jorge"}; 

for(var p in players)
{
    player = players[p];
    var xpos = (x-y)*tileH + mapX;
    var ypos = (x+y)*tileH/2+ mapY;

    ctx.drawImage(charImg[0],xpos,ypos-(charImg[0].height/2));  
    //ctx.fillText(player.name, xpos + 10, ypos - (charImg[0].height/2) - 5);
}

}

编辑:设法改变代码 var player = player [p], for player = player [p];

obrigado vocês que me ajudarão inclusive Igor

对不起我的英语我来自巴西

4

2 回答 2

0

您似乎希望将播放器作为一组播放器访问。但是您使用的对象不是集合。

function newplayer() {
     var y = data.playerY;   
     var x = data.playerX;

     var players=[
            { name: "Jao" },
            { name: "lucas"},
            { name: "pedro"},
            { name:"jorge" }]; 

     for(var player in players)
     {
         var xpos = (x-y)*tileH + mapX;
         var ypos = (x+y)*tileH/2+ mapY;

         ctx.drawImage(charImg[0],xpos,ypos-(charImg[0].height/2));  
         ctx.fillText(player.name, xpos + 10, ypos - (charImg[0].height/2) - 5);
     }

}

如果您不会在播放器上添加其他信息,那么您可以简单地将其设为字符串数组。

于 2013-03-08T16:52:05.623 回答
0

我猜问题出在你注释掉的那一行?这个:

//ctx.fillText(player.name, xpos + 10, ypos - (charImg[0].height/2) - 5);

因为否则你甚至不需要循环,因为你没有使用playeror p。如果这是真的,那么问题player.name将是不确定的。考虑到您的对象和循环方式,player将保留玩家名称。所以:

ctx.fillText(player, xpos + 10, ypos - (charImg[0].height/2) - 5);
于 2013-03-08T14:24:36.630 回答