Фоновая музыка, которая воспроизводится в нескольких кадрах без перезапуска в as3
Я пытался заставить фоновую музыку работать на мою игру в as3. Я хочу иметь один саундтрек для экранов меню, а другой - в игре. Музыка меню не должна останавливаться или создавать новый экземпляр при переключении между кадрами меню (кадры 2-5 в моей программе), но должна останавливаться при вводе кадров игрового уровня (кадры 6-10).
Для этого я создал слой "музыка" на временной шкале и сделал один ключевой кадр на кадре 2 и с кодом:
music=introMusic.play();
где 'music' - переменная soundChannel
Однако при переходе к меню справки и затем к заголовку (кадр 2) начинает воспроизводиться другой экземпляр песни, несмотря на то, что он не покинул кадр музыкального слоя, в котором находится код.
Я знаю, как остановить воспроизведение SoundChannel, но я хочу, чтобы звук продолжал воспроизводиться с прерываниями на всех экранах меню, пока проигрыватель фактически не войдет в уровень.
PS Я относительно новичок в as3, и я предполагаю, что пустое пространство между ключевыми кадрами (от круга до квадрата) на слое - это только один кадр? Просто пришло в голову, что, может быть, это не так?
Заранее спасибо.
1 ответ
Вы должны определенно убрать звуки из своего графика, если вы хотите сделать что-то подобное. Убедитесь, что все ваши звуки находятся в отдельных звуковых каналах, и используйте прослушиватели событий, чтобы определить, когда определенный звук остановился (закончился). Не забудьте удалить прослушиватель событий, прежде чем явно попросить звук прекратить игру.
[sound channel].addEventListener(Event.SOUND_COMPLETE,replaySound);
function replaySound(e:Event)
{
[sound channel].play();
}
Что-то вроде этого будет работать (я просто быстро написал это, так что вы захотите проверить с документами as3, прежде чем внедрять это).
Затем убедитесь, что при переключении кадров или чего-либо еще (например, когда вы хотите воспроизводить внутриигровые звуки) вы удаляете прослушиватель событий, прежде чем остановить звук.
Сделайте то же самое для любых других звуков.
Для получения дополнительной информации см. Событие soundComplete в документах soundChannel.