2012-02-23 12 views
3

私の問題は、複数の画像があり、プリローダーのように読み込みたいのですが、最初の画像を読み込んだ後に2番目の画像の読み込みを開始したいという問題です。私の現在のコードでは、すべてのイメージを1つの配列に格納し、ループを使用してすべてのイメージをロードします(配列のすべてのイメージのソースをイメージオブジェクトに渡します)。JavaScriptの画像を次々と読み込みます。

+0

いくつかのスクリプトを提供してください! –

+0

私はarr ['1.jpg'、 '2.jpg'、 '3.jpg']のような配列を持っています。画像が入っていて、最初に1.jpgをロードしてから1.完了してから1. jpg load 2.jpgそして、イメージは完全に別の配列に格納されます – ketan

答えて

10

あなたはロードイベントを見たいと思っています。

function loadImagesInSequence(images) { 
    if (!images.length) { 
    return; 
    } 

    var img = new Image(), 
     url = images.shift(); 

    img.onload = function(){ loadImagesInSequence(images) }; 
    img.src = url; 
} 

loadImagesInSequence(['a.png', 'b.png', 'c.png']); 

イメージがロードされるたびに、loadイベントが発生します。それが起こると、loadImagesInSequence()を再度実行します。単純に通過した配列からArray.shift()が削除されたため、同じ画像を2度読み込むことはありません。

+0

+1 'img.onload'を設定する前に' shift() 'を呼び出すべきです - それはうまくいくとわかりますが、混乱します:JavaScriptをよく知らない場合、画像配列の "コピー"が呼び出しのために作られ、 'shift()'は効果がない(あるいは、関数呼び出しを準備した後に効果が起こる)ということです。 –

関連する問題