一種のスライドショーのために、次のように機能する巧妙な画像プリローダーを実装しようとしています:
- スライドショーの読み込み時に最初の画像が表示され、画像は 2、3、4、... の順にバックグラウンドで読み込みを開始します。
- ユーザーがイメージ n に切り替えることを決定し (これは、検索または親指または ... を介して行うことができます)、トリガーされたプリロード (1 から) がまだ n をロードしていない場合、順序 (2、3、4、...) ) 1. で確立された n を最初の要素として再編成されます。
2. の他の可能性は、プリロードを一時停止し、画像 n をロードして、プリロードを続行することです。 2、...、最後、1 番目の未ロード、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
ループ内の順序から順番になる前にロードされません。
何か案は?