2013-03-08 75 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); 
    } 

} 

如果你不會在播放器上添加額外的信息,那麼你可以簡單地把它作爲一個字符串數組。