Геймдизайн "группа" html5 аудио элементов для включения и выключения звука
Я делаю игру, и я хочу дать игроку возможность отключить все звуки.
Я называю свои аудиофайлы следующим образом:
var STARTSCREEN = new Audio('sounds/soundtrack-idle-24s.wav');
var GAMEPLAY = new Audio('sounds/soundtrack-active-24s.wav');
var FX_BREAK = new Audio('sounds/effect-break.wav');
var FX_BUBBLE = new Audio('sounds/effect-bubble.wav');
var FX_EXPLOSION = new Audio('sounds/effect-explosion.wav');
Это прекрасно работает, когда я называю аудио, например, так:
function startButtonClickHandler(event){
GAMEPLAY.play();
}
Я нашел функцию отключения звука с помощью кнопки
muteButton = document.getElementById('mute-button');
function muteButtonClickHandler(event) {
audio.muted = !audio.muted;
event.preventDefault();
}
Так что я должен получить все аудио, сгруппированные как var
называется audio
,
Но если я сделаю следующее, все это сломается ('Uncaught TypeError: Невозможно прочитать свойство' play 'из undefined'):
var audio = {
STARTSCREEN = new Audio('sounds/soundtrack-idle-24s.wav');
GAMEPLAY = new Audio('sounds/soundtrack-active-24s.wav');
FX_BREAK = new Audio('sounds/effect-break.wav');
FX_BUBBLE = new Audio('sounds/effect-bubble.wav');
FX_EXPLOSION = new Audio('sounds/effect-explosion.wav');
}
И как меняется мой звонок? Это будет что-то вроде:
audio.GAMEPLAY.play();
1 ответ
Если вы хотите создать объект с аудио:
var audio = {
STARTSCREEN : new Audio('sounds/soundtrack-idle-24s.wav'),
GAMEPLAY : new Audio('sounds/soundtrack-active-24s.wav'),
FX_BREAK : new Audio('sounds/effect-break.wav'),
FX_BUBBLE : new Audio('sounds/effect-bubble.wav'),
FX_EXPLOSION: new Audio('sounds/effect-explosion.wav')
};
Теперь вы можете позвонить play()
метод каждого аудио, как это:
audio.GAMEPLAY.play();
Чтобы отключить / включить звук, все аудио проходят через этот объект:
function toggleMute() {
for (var i in audio) {
audio[i].muted = !audio[i].muted;
}
}