Я хотел вызвать функцию, когда все необходимые изображения загружены.Количество изображений известно заранее, поэтому я попытался присоединить вызов функции к событию onload каждого изображения и подсчитать, сколько раз оно было вызвано.
<html>
<head>
<script>
var tractor;
function Tractor()
{
this.init_graphics();
}
Tractor.prototype.init_graphics = function()
{
this.gr_max = 3;
this.load_count = 0;
this.loading_complete(); // #1 test call, works OK
this.img1 = new Image();
this.img1.onload = this.loading_complete; // #2 gets called, but gr_max = undefined, load_count = NaN
this.img1.src = "http://dl.dropbox.com/u/217824/tmp/rearwheel.gif"; //just a test image
}
Tractor.prototype.loading_complete = function()
{
this.load_count += 1;
alert("this.loading_complete, load_count = " + this.load_count + ", gr_max = " + this.gr_max);
if(this.load_count >= this.gr_max) {this.proceed();}
};
function start()
{
tractor = new Tractor();
}
</script>
</head>
<body onload="start();">
</body>
</html>
Когда оно просто вызывается из другой функцииобъект (см. # 1), он работает так, как я ожидал.Однако, когда он вызывается из события onload (см. # 2), переменные становятся «неопределенными» или «NaN» или что-то в этом роде.Что происходит?Что я делаю неправильно?Как мне заставить это работать?
Я не помню, чтобы когда-либо создавал свои собственные объекты в Javascript, поэтому я, безусловно, глубоко извиняюсь за этот вопрос "что не так с моим кодом".Я использовал эту статью в качестве ссылки, в основном раздел 1.2.
На всякий случай я поставил тот же код на http://jsfiddle.net/ffJLn/