Доброго времени суток!
Почти доделал Змейку на JavaScript по обучающим урокам.
Дошел до звука и он включается, но в видео нет примера выключения.
Вот код по звуку в объекте game:
sounds:{
start:null,
food:null,
apple:null,
bomb:null,
explosion:null,
loss:null,
music:null
},
preload(callback){
let loaded = 0;
let required = Object.keys(this.sprites).length + Object.keys(this.sounds).length;
let onAssetLoad = () => {
++loaded;
if (loaded >= required) {
callback();
}
};
this.preloadSprites(onAssetLoad);
this.preloadSounds(onAssetLoad);
},
preloadSounds(onAssetLoad){
for(let key in this.sounds){
this.sounds[key] = new Audio();
this.sounds[key].src = "sounds/" + key + ".mp3";
this.sounds[key].addEventListener("canplaythrough", onAssetLoad, {once: true});
}
},
// это я уже пробую вырубить музыку
musicOff(){
if (this.playMusic) {
this.sounds.music.stop();
this.playMusic = false;
}
},
Соответственно, включается музыка так:
this.sounds.music.loop = true;
this.sounds.music.play();
Логично было бы предположить, что вырубить музыку в не game по кнопке как то так:
game.buttonMusic.addEventListener('click', function () {
game.musicOff();
});
Но консоль выдала мне такое сообщение:
Код:
|
game.sounds.music.stop is not a function |
И тут я не понимаю, а гугл мне пока показывает несколько другие примеры реализации.
Если есть метод play() для звуков в canvas:
this.sounds.music.play();
То по чему нет или не реализуется у меня метод stop()?
Конечно, можно реализовать вкл/выкл звуков через тэг sound html, но хочется понять и не рушить выстроенный код.
Благодарю!