2012-05-11 6 views
-1

私はjavascriptオブジェクトの使い方を勉強しようとしています。javascriptのオブジェクトの構文

var playerImg = new Image(); 
    playerImg.src = 'player_stay.png'; 

var player = { 
    posX: 50, 
    posY: 50, 
    draw: function(){ 
     ctx.drawImage(playerImg, player.posX, player.posY); 
    } 
} 

playerImgをプレーヤーオブジェクトに挿入するのは可能でしょうか? player.img

EDITなどの 何か:) 私はこのよう

var player = { 
    posX: 50, 
    posY: 50, 
    draw: function(){ 
     playerImg = new Image(); 
     playerImg.src = 'player_stay.png'; 
     ctx.drawImage(playerImg, player.posX, player.posY); 
    } 
} 

それを作ることができますが、私はそれが(新しいイメージを作成すると思います。私がplayer.draw()を使うときはいつも。 これを行うより良い方法があり、すべてのパラメーターがプレーヤーオブジェクト内にあるかどうかを確認するにはどうすればいいですか?

+1

試しましたか?あなたがそれをしたとき何が起こったのですか? – gdoron

答えて

0

私が正しく理解しているのであれば、playerImgオブジェクトをoutsi前もってplayerのde/beforeです。

さて、このあなたがそれを行う可能性が一つの方法ですが、それはとても読みやすいではありませんので、私はそれをお勧めしません:

var player = { 
    posX: 50, 
    posY: 50, 
    draw: function(){ 
     ctx.drawImage(player.img, player.posX, player.posY); 
    }, 
    img: (function(){ 
     var playerImg = new Image(); 
     playerImg.src = 'player_stay.png'; 
     return playerImg; 
    })() 
} 

この構築(function(){})();自己実行/自己呼び出さ無名関数と呼ばれていますまたはImmediately-Invoked Function Expression

BTW:この表現はプレーヤーオブジェクトが構築されたときに1回だけ実行されるため、繰り返しイメージを作成する心配はありません。

1

はい、なぜ:

var player = { 
    posX: 50, 
    posY: 50, 
    draw: function(){ 
     ctx.drawImage(playerImg, player.posX, player.posY); 
    }, 
    playerImage: playerImg 
} 
0

はい、それは可能です。一般的に

、あなたはこのように、オブジェクトまたはリストを入れ子にしていることができます。

var player = { 
    posX: 50, 
    posY: 50, 
    draw: function(){ 
     ctx.drawImage(playerImg, player.posX, player.posY); 
    }, 
    playerImage:{ 
       src = 'player_stay.png' 
       }, 
    playerList:['elem1', 'elem2'] 
} 

はあなたのコードでそれを参照するためにあなただけの(値の代入の場合の例)

player.playerImage.src='anotherplayer.jpg'; 

を書きますこのリンクは何らかの助けになる可能性があります http://www.json.org/

+0

本当に私が望んでいたものではありません。 私はプレーヤーオブジェクトの外に画像を作成しますが、 ですが、すべてをプレーヤーオブジェクトの内側に入れたいと思っています。 – user1093555

+0

'playerImage'はプレーンなjavascriptオブジェクトではありません。それは 'イメージ' –