2013-10-26 4 views
0

У меня проблема с объектом, не рисующим его образ. Я никогда установить OnLoad свойство изображения функции вытяжки ..Html5 canvas not drawing

//ctor 
function Sprite(someargs,pContext) 
    this.setContext(pContext); //This could be the problem? 
    this.setX(px); 
    this.setY(py); 
    this.setTexture(pImagePath);  


//I run this in the constructor 
Sprite.prototype.setTexture = function(pImagePath){ 
    this.texture = new Image(); 
    this.texture.onload = this.draw(); 
    this.texture.src = pImagePath; 
}; 

Sprite.prototype.draw = function(){ 

    this.getContext().drawImage(this.texture,this.getX(),this.getY(),100,100); 
}; 

Sprite.prototype.setContext = function(pContext){ 
     this.mContext = pContext; 
}; 

во время выполнения без ошибок, изображение не рисуется на холсте, хотя. I'v помещает предупреждения во все вышеперечисленные методы, все из которых выполняются.

У кого-нибудь есть идеи, почему он не рисует?

Приветствия

+0

Я думаю, вам нужно будет показать, как вы на самом деле мгновенно ng контекст - нечего сказать «это может быть проблема, но я удалил код» :) – Basic

+0

Вызывается setContext перед setTexture? –

+0

Обновленный код, да, я вызываю setContext first –

ответ

1
this.texture.onload = this.draw(); 

вы не устанавливая onload функции draw но к результате из draw функции

this.texture.onload = this.draw; 

также не было бы хорошо, потому что вы потеряете свой контекст this здесь. this внутри draw функции будет указывать на texture вместо Sprite

вам нужно bind функция draw к this (который является Sprite в данный момент) и передать его в onload

this.texture.onload = this.draw.bind(this); 

или:

var that = this; 
this.texture.onload = function() { that.draw(); } 
+0

А злой, что разобрал его. Спасибо! –