2013-03-08 74 views
-1

不知道是什么回事 此功能 应该把 一个新的球员 为每名数组在JavaScript是不工作的权利

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 =玩家[p],玩家=玩家[p];

obrigadovocês阙我ajudarão 包容伊戈尔

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

+4

怎么回事? – bfavaretto 2013-03-08 14:19:30

+1

你的foreach代码是正确的,你的问题应该在别的地方。 – 2013-03-08 14:21:43

+0

在var player = players [p]中删除'var';' – Igor 2013-03-08 14:21:46

回答

0

我猜问题是你注释掉行?这一个:

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

因为否则,你甚至都不需要循环,因为你不使用playerp。如果这是真的,问题是player.name将是未定义的。考虑到你的对象和你循环的方式,player将保存玩家的名字。所以:

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

我可以把 一个 球员 我希望把更多的 在可变球员一个球员例如每个球员:若昂一名球员,卢卡斯播放器二,佩德罗树的球员,忽略此行:ctx.fillText(播放器,XPOS + 10,ypos - (charImg [0] .height/2) - 5); – 2013-03-08 14:41:46

+1

然后我们需要更多细节。你当前的循环对玩家没有任何帮助,你可以定义'player',但从不使用它。 – bfavaretto 2013-03-08 14:48:32

+0

如果我把整个代码放在这里,你将无法理解别名是否有客户端和服务器:用户“Igor”帮助了我。我的所有代码都有超过120行 – 2013-03-08 15:11:07

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

} 

如果你不会在播放器上添加额外的信息,那么你可以简单地把它作为一个字符串数组。