0

問題:

HTML5 キャンバス ゲームを作成しており、船の src を images/powship.png に割り当てる船用のオブジェクトを作成したいと考えています。船を作成してから i 変数に src を割り当てれば機能しますが、船を作成するときに一度にできるかどうか知りたかったのです。

次のようなことをするとうまくいきます:

ship = { //a class for my ship
    x : $(window).width()/2,
    y : $(window).height()/2,
    i : new Image()
}
ship.i.src="images/powship.png";

船を作成するときに(物事をまとめるために)すべてを一度にやりたかったのです。このようなもの:

ship = { //a class for my ship
    x : $(window).width()/2,
    y : $(window).height()/2,
    i : new Image(),
    src : function() {
        return this.i.src="images/powship.png"
    }
}

しかし、うまくいかないようです。

動作するコードはこちら

デモはこちら

縮小されていない JS ファイル

質問:

オブジェクトの作成時に関数を実行するにはどうすればよいですか?

4

3 に答える 3

2

関数ship.src();が実行されてい.srcないため、 が設定されていません。

あなたのshipクラスは作成時にもっと多くのものを実行したいかもしれないので、コンストラクターが適切です。

var Ship = function(){
    // set up basic components of your class
    this.x = $(window).width()/2;
    this.y = $(window).height()/2;
    this.i = new Image(); 

    // preform any construction requirements
    this.i.src = "images/powship.png";
};

var ship = new Ship();

または、次のようにカレーすることもできます。

var ship = function(){
    result = {
       x : $(window).height()/2,
       y : $(window).height()/2,
       i : new Image()
    }
    result.i.src = "images/powship.png";
    return result;
};
于 2012-07-10T01:13:30.310 に答える
1

コードを再利用できるコンストラクター関数を作成する必要があります。

function Ship() {
    var win = $(window);
    this.x = win.width()/2;
    this.y = win.height()/2;
    this.i = new Image();
    this.src = this.i.src = "images/powship.png";
}

var ship1 = new Ship();
var ship2 = new Ship();

オブジェクトは作成するまで存在しないため、リテラル表記で作成中にそのプロパティを参照できないため、実行しようとしていることができません。

于 2012-07-10T01:21:13.507 に答える
-1
i : new Image({src : "images/powship.png" })

それを試してください、うまくいくはずです。

于 2012-07-10T01:14:03.493 に答える