Это просто вопрос того, как вы хотите создавать вещи.Несколько вариантов:
1) Передайте либо загруженные изображения вокруг.Если ваше приложение становится большим, это означает также передачу множества изображений в представления, что не является идеальным.
let view = new View({heroImage, bmpImage}); // In the main view
let hero = new HeroSprite(images.heroImage); // Inside the constructor
2) Создайте ссылку в единственном стиле для своей очереди
let queue = SingletonClassReference.queue;
let hero = new HeroSprite(queue.getResult("hero"));
3) Используйте диспетчер активов.
init() {
this.assets = new AssetManager();
}
handleComplete(event) {
// When an asset loads
this.assets.register(event.item.id, item.item.result); // API TBD
}
// Somewhere
let assets = getReferenceToAssets(); // Either pass it around or make it singleton
let hero = assets.get("hero");
Это всего лишь псевдокод.
Передача ссылок вокруг является грязной и очень тесно связывает ваш код,так что это не идеально.Создание некоторого класса статических ресурсов или экземпляра очереди намного более модульно, но реализация действительно зависит от ваших предпочтений.Я не предлагаю ничего из этого в качестве передового опыта - просто несколько быстрых идей о том, как работать с активами.
Adobe Animate решил эту проблему для анимаций CreateJS, используя глобальный объект images
, в который были выгружены предварительно загруженные ресурсы,что было немного грязно, но сработало.В более поздних выпусках они реализовали поиск анимации, в котором есть объект images
для легкого доступа.
Cheers,