我有一组图像,它们是动画中的帧,例如: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)一旦成功加载所有图像,如何进行回调。