Интересно, можно ли загружать актив динамически в заданное время в Phaser, а не загружать все в функции предварительной загрузки. Причина этого проста: у меня есть игра с тремя разными уровнями, каждый из которых имеет разные фоновые песни; и поэтому я бы предпочел загружать только одну песню при запуске, чтобы сократить время загрузки.
Сейчас моя функция предварительной загрузки выглядит так:
preload: function()
{
game.load.audio('pixel_world',
['assets/music/pixel_world_lo.ogg', 'assets/music/pixel_world_lo.mp3']);
game.load.audio('second_source',
['assets/music/second_source_lo.ogg', 'assets/music/second_source_lo.mp3']);
game.load.audio('reboot_complete',
['assets/music/reboot_complete_lo.ogg', 'assets/music/reboot_complete_lo.mp3']);
game.load.image('pickup', 'assets/img/pickup.png');
}
Вместо этого я попытался переместить один из вызовов game.load.audio () в функцию create:
create: function()
{
game.load.audio('pixel_world',
['assets/music/pixel_world_lo.ogg', 'assets/music/pixel_world_lo.mp3']);
// good things follow...
}
Однако следующие вызовы терпят неудачу:
this.cache.isSoundDecoded(level.song)
// Phaser.Cache.isSoundDecoded: Key "pixel_world" not found in Cache.
song = game.add.audio(level.song);
// Phaser.Cache.getSound: Key "pixel_world" not found in Cache.
Вы знаете, как я могу заставить это работать или каким-либо другим способом убедиться, что три песни не загружаются при запуске игры? Спасибо!