2012-02-23 70 views
3

我的問題是,我有多個圖像,想要加載像preloader,但問題是我想在完成第一個圖像後開始加載第二個圖像。在我當前的代碼中,我將所有圖像存儲在一個數組中,並使用一個循環加載所有圖像(將數組的所有圖像的源代碼賦予一個圖像對象),然後開始加載所有圖像。在JavaScript中一個接一個地加載圖像

+0

提供一些腳本! – 2012-02-23 11:30:59

+0

我有像ARR陣列['1.jpg','2.jpg','3.jpg']包含圖像和負載1.jpg首先,然後完成後1. JPG負載2.jpg等所有..., image那些完整的加載將被存儲在另一個數組中 – ketan 2012-02-23 12:03:10

回答

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']); 

無論何時加載圖像,都會觸發加載事件。當發生這種情況時,我們再次執行loadImagesInSequence()。我們不會加載相同的圖像兩次,因爲Array.shift()從我們簡單地通過的數組中移除。

+0

+1在設置'img.onload'之前,你應該調用'shift()' - 我知道它的工作原理,但它很混亂:如果你不太瞭解JavaScript,圖像數組的「副本」用於調用,而「shift()」不起作用(或者在準備函數調用之後發生效果)。 – 2012-02-23 11:53:36

相關問題