2015-05-21 3 views
0


, когда я меняю переменную после загрузки изображения, поэтому в gameloop у меня есть старое значение. что я делаю неправильно?переменная класса после загрузки изображения

var symb ; 
var Symbol=function(imgSrc) { 
    this.loaded=false; 
    this.img=new Image(); 
    this.img.onload = function() { 
     this.loaded=true; 
     console.log("in loaded - " + this.loaded); 
    } 
    this.img.src=imgSrc; 
} 
Symbol.prototype = { 
    getLoaded: function() 
    { 
     return this.loaded; 
    } 
} 

symb=new Symbol("images/worm.jpg"); 
console.log("after loaded - " + symb.getLoaded()); 
setInterval(testSymbolsLoaded, 3000); 

function testSymbolsLoaded() { 
    console.log("after 3 second loaded - " + symb.getLoaded()); 
} 

этот код возврата

after loaded - false 
in loaded - true 
after 3 second loaded - false 

почему последнее значение является ложным, когда ранее было изменение верно ??

спасибо за помощь

ответ

1
this.img.onload = function() { 
    this.loaded=true; 
    console.log("in loaded - " + this.loaded); 
} 

Внутри функции this имеет в виду контекст изображения. Вам нужно, чтобы связать функцию с существующим this:

Fix:

this.img.onload = function() { 
    this.loaded=true; 
    console.log("in loaded - " + this.loaded); 
}.bind(this); 
+0

yes..it is..thanks много –

Смежные вопросы