Показать сообщение отдельно
  #1 (permalink)  
Старый 04.10.2023, 14:08
Аватар для dandiablo
Интересующийся
Отправить личное сообщение для dandiablo Посмотреть профиль Найти все сообщения от dandiablo
 
Регистрация: 27.11.2022
Сообщений: 10

Управление звуками и музыкой в 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, но хочется понять и не рушить выстроенный код.

Благодарю!
Ответить с цитированием