我目前正在编写 HTML5 P&C 冒险。
由于在游戏开始之前要加载许多图像和精灵,我想预加载所有图像。
我的想法是创建一个单曲<img>
并制作它visibility: hidden;
,这样用户什么都看不到。
在每个加载的图像之后,我想执行一个更新进度条的函数。
所以我做了这样的事情:
loadImages: function () {
$('#preLoader').attr('src', this.__images[0]).on('load', this.loadCallback);
},
loadCallback: function () {
this.__images.splice(0, 1);
Game.events.trigger('progressbar:bar:step');
if(this.__images.length > 0) {
this.loadImages();
}
else if(!this.__fired) {
this.__fired = true;
this.trigger('finished');
}
}.$bound(),
this.__images
是一个包含所有要加载的url的数组,回调函数基本上是调用进度条更新并检查是否还有图像,然后再次调用第一个函数。
事情似乎是,load
事件并没有真正等到加载图像,因为在 1ms 的src
属性<img>
被更改后,回调被触发。
所以这可能无法正常工作
有没有办法像我想要的那样实现这一目标?
基本上我希望图像加载完成,然后触发回调,然后再次加载图像,等等......直到加载数组中的所有图像。