2

ヘイ、私はこのスクリプトを使用しています

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

しかし、それは機能していないようです。

何か案は?または、すでにオンラインで使用できるものはありますか?

4

3 に答える 3

1

問題は、imageObj を 1 つだけ設定し、そのソースとイベント ハンドラーを変更することです。画像ごとに画像オブジェクトを作ってみませんか?(ループ内)。

もう少し詳しく言うと:

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

    }
于 2010-03-05T13:16:57.397 に答える
0

効果がないでしょう。100枚の画像があるとします。画像は非同期で読み込まれます。最初に読み込まれた画像が画像番号 50 の場合、関数は 50 枚の画像が読み込まれたことを示しますが、読み込まれた画像は 1 つだけです。

于 2013-03-04T09:57:13.913 に答える
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];
     };

}
于 2010-03-05T13:14:47.850 に答える