Я пытаюсь создать предварительную загрузку для моего сайта через библиотеку PreloadJS.
На сайте я создал дюжину элементов с помощью bodymovin / lottie.
Bodymovin создает файлы json со всемиинформация о графических элементах и анимации. При использовании Lottie он отображается как svg.
Без PreloadJS файл json обычно загружается посредником, но в PreloadJS он сначала загружается посредником, а затем предварительно загружается второй раз.
ИтакЯ задавался вопросом, что я делаю неправильно.
Пример дублированного файла предварительной загрузки
![twice preload file](https://i.stack.imgur.com/La63L.jpg)
У меня была та же проблема с изображениями (загружен дважды),но я решил добавить «false» в «new createjs.LoadQueue (false)», но со всеми другими типами файлов (json, js, css) проблема с двойной загрузкой все еще существует.
Предварительная загрузка
var preload;
function setupImgs() {
var images = $('#main').find('img').map(function(){
return $(this).attr('src')
}).get();
var i = 0;
$.each(images, function(index, value) {
preload.loadFile({id:'img0'+i, src:value});
i++;
});
}
function setupSvgs() {
var pathjson = basepath + 'assets/img/';
var json = [
pathjson+'contatti.json',
pathjson+'grafica.json',
pathjson+'lavori.json',
pathjson+'packaging.json',
etc.....
];
var i = 0;
$.each(json, function(index, value) {
preload.loadFile({id:'json'+i, src:value});
i++;
});
}
function startPreload() {
$('#preload').css({'display': 'block'});
preload = new createjs.LoadQueue(false);
preload.on('fileload', handleFileLoad);
preload.on('progress', handleFileProgress);
preload.on('complete', loadComplete);
preload.on('error', loadError);
setupImgs();
setupSvgs();
}
function handleFileLoad(event) {
//console.log("A file has loaded of type: " + event.item.type);
}
function loadError(evt) {
console.log("Error!",evt.text);
}
function handleFileProgress(event) {
var p = Math.round(event.loaded * 100);
$('.preload-perc').text(p + '%');
$('.preload-bar').css({'width': p + '%'});
}
function loadComplete(event) {
console.log("Finished Loading Assets");
}
startPreload();
часть Лотти
var ID = document.getElementById('servizi');
var preload_logo = lottie.loadAnimation({
container: ID,
renderer: "svg",
loop: true,
autoplay: true,
path: basepath+'assets/img/servizi.json',
rendererSettings: {
progressiveLoad: true,
}
});