从文件名数组中预加载一堆图像,在完成50%后执行

时间:2010-03-05 13:07:23

标签: javascript function preload

Hay,我正在使用这个脚本

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();
        };
    }

但它似乎没有起作用。

有什么想法吗?或者我有什么可以上网的吗?

3 个答案:

答案 0 :(得分:1)

问题是你只设置了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);
         };

    }

答案 1 :(得分:0)

如果数组中有奇数个图像,则

images.length / 2将不是整数,因此在检查函数中它永远不会等于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];
     };

}

答案 2 :(得分:0)

它无效。假设你有100张图片。 图像异步加载。如果加载的第一个图像是图像编号50,则该功能将说明已加载50个图像,而只加载了1个图像。