を停止し、私は20枚の写真をプリロードしようとしています。私はこのコードを書いていますが、それが動作するかどうかはわかりません。彼らはピクセル化しませんが、それらは点滅し、遅れて、奇妙に見えます。私が間違っていることは何ですか?画像の多くのプリロード、プリロード画面
$(window).on("load", (function() {
PrepareImgs();
console.debug('loaded');
}));
var sectionArray = ["whoAreWe", "video", "web", "community", "charity"];
var imgArray = [];
function PrepareImgs() {
// console.debug("PrepareImgs started");
for (var i = 0; i < 5; i++) {
for (var j = 1; j <= 4; j++) {
var zdj = "Assets/Images/CroppedAndCleaned/" + sectionArray[i] + "/pp" + j + ".jpg";
imgArray.push(zdj);
}
}
LoadImages();
}
function LoadImages() {
// console.debug("LoadImages started");
var i = 0;
$(imgArray).each(function() {
// console.debug("loop started");
var img = new Image();
$(img).attr('src', imgArray[i]);
img.src=imgArray[i];
console.debug(i);
// function preloadImage(url)
// {
// var img=new Image();
// img.src=url;
// }
img.onload = function() {
console.debug("Internal loop started");
i+=1;
if (i == $(imgArray).length)
HideLoader();
}
});
}
function HideLoader() {
// console.debug("HideLoader Started");
setTimeout(function() {
$('body').addClass('loaded');
}, 1);
}
私は、主な問題は、あなたの 'onload'ハンドラ内にあると思います。明らかな2つの問題は、 'onload'が非同期であることです。各画像のロードイベントは、ロードにかかる時間に応じて異なる時間に起動します。おそらく、あなたが期待する順序ではないでしょう。 'i'へのインクリメントは外側スコープの 'i'に影響しないかもしれません。また、長さを取得するために 'imgArray'を' jQuery() 'に渡す必要はありません。つまり、おそらく '20'ではなく' 0'または '1'を返すでしょう。 –
はい、それは常に0を返していて、混乱しています。イベントのロードが完了するまでループを停止する必要がありますか?それも可能ですか? – alex3wielki