对于一种幻灯片,我正在尝试实现一个聪明的图像预加载器,它应该如下工作:
- 在加载幻灯片时显示第一张图像,并且图像开始在后台按 2、3、4、... 的顺序加载
- 如果用户决定切换到图像 n(可以通过搜索或拇指或...完成)并且触发的预加载(从 1.)尚未加载 n,则顺序(2、3、4,... ) 在 1. 中建立的将重新组织,以 n 作为第一个元素。
2. 的其他可能性可能是暂停预加载、加载图像 n 并继续预加载,但我更喜欢第一个想法,因为这将为您提供更复杂的重新排序的自由,例如 (n, n+1, n+ 2,...,最后,第一个未加载,第二个未加载,...)。
到目前为止,我只是做了一个简单的预加载循环:
for (var i = 0; i < issue.pages.length; i++)
{
log("preloading image from URL " + issue.pages[i].imageUrl);
var img = new Image();
img.onload = function()
{
log("reading loading image " + this.src);
};
img.src = issue.pages[i].imageUrl;
}
这工作正常,但似乎阻止下载其他图像:如果我打电话
imageN = new Image();
imageN.src = issue.pages[n].imageUrl;
当循环的图像仍在加载时,在其他地方(拇指的点击)imageN
将不会在轮到循环中的顺序之前加载。
有任何想法吗?