1
まず、私はこのような質問が何百万もあることを知っています。しかし、私はそれが私を助けることはできませんでした。Javascriptオブジェクトメソッドアクセス不能/定義されていません
私はすべての画像がロードされた後にdrawメソッドを呼び出します。ご覧のとおり、描画メソッドの中の変数(loadedImages, this
)にアクセスしようとすると、定義されません。
なぜこのようなことが起こり、どうすればその変数を取得できますか?それとthat.drawを(使用中
var canvas = $('#area')[0],
context = canvas.getContext('2d');
function Character() {
return {
images: ["hair.png", "head.png", "mouth.png"],
loadedImages: {},
init: function() {
this.loadImages();
},
loadImages: function() {
var loaded = 0,
imagesLength = this.images.length,
draw = this.draw;
for(var i = 0; i <= imagesLength - 1; i++) {
var image = new Image(),
bodyPart = this.images[i];
image.onload = function() {
loaded++;
if(loaded == imagesLength) {
draw();
}
};
image.src = 'characters/Canser/' + bodyPart;
this.loadedImages[bodyPart.split(".")[0]] = image;
}
},
draw: function() {
console.log(this); // undefined???
}
};
}
var canser = new Character();
canser.init();
正確には、「描画」と呼ばれる方法です。 'this.draw()'は 'draw()'とは異なります。 – deceze
これを行うと、イメージオブジェクトが戻って描画メソッドがありません。 See:image.onload –
あなたの文脈で 'this'の' scope'を理解してみてください。 (参考:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/this) – lexith