1

JSを使うのは初めてです。オブジェクトに関するすべての情報を1か所に保管したいと思います。だから私はこの関数を作りました:

function Obiekt(img) {
this.img = img;
this.ready = false;
this.image = new Image();
this.image.src = this.img;
this.image.onload = function() {
    ready = true;
};
this.x = 0;
this.y = 0;
this.rotation = 0;
}

次に、ヒーローという名前のオブジェクトを作成しました。

var hero = new Obiekt("images/hero.png");

問題は、hero.readyは常にfalseであり、これを描画できないことです。

if (hero.ready) {
     ctx.drawImage(hero.image, 0, 0);
}

手伝って頂けますか?

4

1 に答える 1

3

2 つの問題:

  • ready見つからない
  • 画像がキャッシュされている場合 (ブラウザーによって異なります)、コールバックを設定した後に画像が読み込まれないため、使用した順序は機能しません。

ここに解決策があります:

var _this = this;
this.image.onload = function() {
    _this.ready = true;
};
this.image.src = this.img;

(そして、ネーミングがあまり良くないことを付け加えておきます:私はそれを好むでしょimgsrcimg

于 2013-03-05T17:20:41.200 に答える