次のようなアニメーションのフレームである一連の画像がありframe-1.jpg, frame-2.jpg
ます。約 400 枚の画像があります。
私がやりたいことは、アニメーションが始まる前にこれらの 400 枚の画像をプリロードすることです。
通常、画像をプリロードするときは、次を使用します。
var images = [
'img/nav-one-selected.png',
'img/nav-two-selected.png',
'img/nav-three-selected.png',
'img/nav-four-selected.png'
];
$(images).each(function() {
var image = $('<img />').attr('src', this);
});
しかし、この例では、var に画像をリストすることはできません。また、画像がすべて読み込まれたら、開始アニメーションを開始したいと考えています。
これまでのところ、次のものがあります。
$spinner_currentFrame = 1;
$numFrames = 400;
function preloadImages() {
$($images).each(function() {
var image = $('<img />').attr('src', this);
});
startAnimation();
}
function startAnimation() {
$spinner_loadingAnim = setInterval(function () {
UpdateSpinner();
}, 140);
}
function UpdateSpinner() {
$spinner_currentFrame = $spinner_currentFrame + 1;
if($spinner_currentFrame > $numFrames) {
$spinner_currentFrame = 1;
}
console.log($spinner_currentFrame);
$('#spinner').css("background-image", "url(frame-" + $spinner_currentFrame + ".jpg)");
}
$(document).ready(function() {
preloadImages();
});
そのため、1 から 400 までの画像をプリロードし、それが完了したらアニメーションを開始するという計画です。$images var をどのように構築しますか?
私は次のようなことを考えました:
$images = [];
$frame = 1;
$numFrames = 400;
$($frame).each(function() {
$frame = $frame + 1;
if($frame <= $numFrames) {
$images =+ 'frame-' + $frame + '.jpg';
}
});
しかし、a) これがどのように効率的であるか、b) すべての画像が正常に読み込まれた後にコールバックを実行する方法がわかりません。