image.onload in function - 为什么它不起作用?

时间:2013-03-05 17:19:49

标签: javascript image onload

我是使用JS的新手。我想在一个地方保存有关对象的所有信息。 所以我已经完成了这个功能:

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总是假的,我无法画出来。

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

你能帮助我吗?

1 个答案:

答案 0 :(得分:3)

两个问题:

  • ready无法找到
  • 如果您的图像已缓存(取决于浏览器),则在您设置回调后,由于未加载图像,因此您使用的顺序无效。

这是一个解决方案:

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

(我补充一点,命名不是很好:我希望imgsrc超过img