1

ここでいくつかの画像をプリロードしようとしています。しかし、必要なのは、いくつかの画像を配列にプリロードし、進行状況を表示することです。

これは機能していますが、コンソールにGET 404 (Not Found)が表示されます。しかし、その作業。この警告を回避するにはどうすればよいですか?

ありがとう!

function start(id) {
    var images = new Array();
    images[0] = "http://www.travelblog.org/Wallpaper/pix/tb_fiji_sunset_wallpaper.jpg";
    images[1] = "http://www.fantasy-and-art.com/wp-content/gallery/abstract-wallpapers/lion_hd_wallpaper.jpg";
    images[2] = "http://hidefwallpaper.org/wp-content/gallery/1_apple_wallpaper_02/90831582ea8e018759044f2820b518d1.jpg";
    imageObj = new Image();
    imageObj.src = images[id];
    imageObj.onload = function() {
        if (id == images.length) {
            alert('Carregou tudo');
        }
        if (id < images.length) {
            start(id + 1);
            alert(id);
        }
    }
}
start(0);​
4

2 に答える 2

2

start 関数の再帰呼び出しが何度も実行されているため、配列の長さに等しいインデックスを持つ配列要素がないため、404 メッセージが表示されます。配列はゼロベースです。たとえば、if (id < images.length) {id が 2 のときに呼び出すと、id を 3 に増やして start を再度呼び出しますが、画像はありません[3]。

これを試して:

var images = new Array();
images[0] = "http://www.travelblog.org/Wallpaper/pix/tb_fiji_sunset_wallpaper.jpg";
images[1] = "http://www.fantasy-and-art.com/wp-content/gallery/abstract-wallpapers/lion_hd_wallpaper.jpg";
images[2] = "http://hidefwallpaper.org/wp-content/gallery/1_apple_wallpaper_02/90831582ea8e018759044f2820b518d1.jpg";

function start(id) {
    imageObj = new Image();
    imageObj.src = images[id];
    imageObj.onload = function() {
        if (id == images.length) {
            console.log('Carregou tudo');
        }
        if (id < (images.length-1)) {
            start(id + 1);
        }
    }
}
start(0);​
于 2012-06-08T19:48:51.050 に答える
1

最初に画像配列を設定します...次に。

for(var i = 0; i < images.length; i++){
    imgsrc = images[i];
    var obj = new Image();
    obj.src = imgsrc;
    obj.id = i;
    obj.onload = function(){
       if(this.id == images.length-1){
          alert('Carregou tudo');
       }
    }
}
于 2012-06-08T19:41:15.327 に答える