簡體   English   中英

從文件名數組中預加載一堆圖像,完成50%后即可運行

[英]Preload a bunch of images from an array of file names, do function after 50% are done

干草,我正在使用此腳本

function preloader(images){
         var i = 0;
         imageObj = new Image();


         // start preloading
         for(i=0; i<=images.length; i++){
            imageObj.src=images[i];
            imageObj.onLoad = check(i, images.length / 2);
         };

    }

並將一堆圖像傳遞到其中以進行預加載。

check()函數是這個

check = function(e,i){
        if( e == i ){
             run_fading_gallery(imgcode);
            $(".loading").hide();
        };
    }

但是它似乎沒有用。

有任何想法嗎? 或者我有什么可以在線使用的?

事實是,您僅設置了1個imageObj並更改了其源和事件處理程序。 為什么不嘗試為每個圖像創建一個圖像對象? (在您的循環中)。

更加具體:

function preloader(images){
         var i = 0;

         // start preloading
         for(i=0; i<=images.length; i++){
            imageObj = new Image();
            imageObj.src=images[i];
            imageObj.onLoad = check(i, images.length / 2);
         };

    }

不起作用。 假設您有100張圖片。 圖像異步加載。 如果加載的第一個圖像是圖像編號50,則該函數將說已加載了50張圖像,而僅加載了1張圖像。

如果數組中的圖像數為奇數,則images.length / 2將不是整數,因此在check函數中它永遠不會等於i 試試Math.floor

function preloader(images){
     var i = 0;
     imageObj = new Image();


     // start preloading
     for(i=0; i<=images.length; i++){

        imageObj.onLoad = check(i, Math.floor(images.length / 2));
        imageObj.src=images[i];
     };

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM