[英]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.