Управление звуками и музыкой в 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, время: 09:06. |