Класс Assets в PixiJS представляет собой современный
инструмент управления ресурсами и их загрузкой. Он обеспечивает
единую точку загрузки, централизуя работу с текстурами,
спрайтами, анимациями и другими ассетами. Основная цель —
упростить процесс подготовки ресурсов и избежать
дублирования кода при работе с разными типами файлов.
В отличие от старого подхода с использованием Loader,
Assets поддерживает асинхронную загрузку,
кэширование и оптимизированное управление зависимостями между
файлами.
Загрузка осуществляется с помощью метода Assets.load,
который принимает один или несколько путей к ресурсам, а также массив
объектов с дополнительными параметрами.
import { Assets } from 'pixi.js';
await Assets.load([
'images/sprite.png',
{ name: 'background', src: 'images/bg.jpg' }
]);
Ключевые моменты:
Promise,
что упрощает интеграцию с async/await.После загрузки ассет доступен через метод
Assets.get.
const bgTexture = Assets.get('background');
const spriteTexture = Assets.get('images/sprite.png');
Особенности:
undefined.PIXI.Texture,
который можно использовать напрямую в спрайтах:import { Sprite } from 'pixi.js';
const sprite = new Sprite(spriteTexture);
Assets автоматически кэширует загруженные ресурсы,
предотвращая повторные запросы. Это обеспечивает эффективное
использование памяти и сетевых ресурсов.
Assets.reset, если
требуется перезагрузка ресурсов:Assets.reset();
Особое внимание уделяется работе с атласами спрайтов и
анимациями. Assets корректно обрабатывает
JSON-файлы, содержащие данные о текстурах и фреймах:
await Assets.load('animations/hero.json');
const heroSheet = Assets.get('animations/hero.json');
const heroFrames = heroSheet.animations['run'].map(frame => frame.texture);
Преимущества:
PIXI.AnimatedSprite.Класс Assets поддерживает кастомные
загрузчики, что позволяет расширять стандартное поведение под
специфические типы файлов. Для этого используются методы
register и use:
Assets.register('myFormat', {
extension: '.my',
load: async (url) => {
const response = await fetch(url);
const data = await response.json();
return processMyData(data);
}
});
Это обеспечивает гибкость при работе с нестандартными ресурсами, JSON-конфигурациями или бинарными форматами.
Для больших проектов важно иметь информацию о состоянии
загрузки. Assets поддерживает колбэки и события
прогресса:
Assets.load(['images/bg.jpg', 'images/sprite.png'], {
onProgress: (progress) => console.log(`Загружено ${progress * 100}%`)
});
Особенности:
progress возвращается в диапазоне от 0 до 1.Assets позволяет объединять ассеты в
пакеты для удобного управления:
await Assets.loadBundle('game', {
'hero': 'sprites/hero.png',
'enemy': 'sprites/enemy.png',
'background': 'images/bg.jpg'
});
const heroTexture = Assets.get('game/hero');
Преимущества:
Методы класса Assets легко интегрируются с
игровым циклом PixiJS. Например, можно загружать
ресурсы до старта сцены, а после завершения загрузки создавать спрайты и
анимации:
async function initScene() {
await Assets.load(['sprites/hero.png', 'sprites/enemy.png']);
const hero = new Sprite(Assets.get('sprites/hero.png'));
const enemy = new Sprite(Assets.get('sprites/enemy.png'));
app.stage.addChild(hero, enemy);
}
Асинхронная модель позволяет не блокировать основной поток, что критично для плавной работы игр и визуальных приложений.
Assets автоматически учитывает зависимости между
ресурсами. Если один ассет зависит от другого, его загрузка будет
корректно синхронизирована, предотвращая ошибки отображения или
использование незагруженных текстур.
Класс Assets является мощным инструментом для
централизованного управления ресурсами, обеспечивая
асинхронность, кэширование, поддержку анимаций и пакетов
ресурсов, а также гибкую интеграцию с игровым циклом PixiJS. Он
заменяет устаревший Loader и предоставляет современный
подход к организации ассетов в сложных приложениях.