-1

私は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のようなもの

編集:私はそれをこのようにすることができます

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

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

4

3 に答える 3

1

はい、なぜですか:

var player = {
    posX: 50,
    posY: 50,
    draw: function(){
        ctx.drawImage(playerImg, player.posX, player.posY);
    },
    playerImage: playerImg
}
于 2012-05-11T11:14:14.973 に答える
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/

于 2012-05-11T11:18:55.973 に答える
0

playerImg私が正しく理解していれば、オブジェクトの外側/前にオブジェクトを構築したくありませんplayer

これはあなたができる1つの方法ですが、あまり読みにくいのでお勧めしません:

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(){})();は、自己実行/自己呼び出しの無名関数、または即時呼び出し関数式と呼ばれます。

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

于 2012-05-11T11:41:41.480 に答える