因为在JavaScript中无法正常工作

时间:2013-03-08 14:17:53

标签: javascript html5 canvas

不知道它会发生什么 这个功能 应该放 一个新的球员 对于数组中的每个名称

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 = players [p],对于player = players [p];

obrigadovocêsquemeajudarão 包容性的伊戈尔

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

2 个答案:

答案 0 :(得分: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);

答案 1 :(得分: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);
     }

}

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