Управление звуками и музыкой в Canvas
Доброго времени суток!
Почти доделал Змейку на 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, но хочется понять и не рушить выстроенный код. Благодарю! |
Тебе нужен .pause().
Открываешь консоль, пишешь console.log(new Audio()) и смотришь какие методы там действительно есть.* Открываешь mdn находишь Audio и смотришь какие методы там есть.** * Надо раскрывать prototype, чтоб добраться до них. ** надо перейти в родителя - HTMLMediaElement, чтоб их найти. Не очень юзерфрендли для новичка, признаю, обычно таки найти информацию проще.:) |
| Часовой пояс GMT +3, время: 22:15. |