Как приостановить звук, когда тот же звук воспроизводится в Javascript

#javascript

#javascript

Вопрос:

У меня есть этот код

 const gameSounds = {
  backgroundTheme: function(){
    const backgroundTheme = new Audio('./gameSounds/theme.mp3');

    if(backgroundTheme){
      backgroundTheme.pause();
    }
      backgroundTheme.play();
    
  }
  

У меня есть кнопка «Пуск», в которую я добавил прослушиватель событий click, и когда произойдет щелчок, начнется воспроизведение звука, но на данный момент вы можете нажать кнопку «Пуск» несколько раз, и звук будет воспроизводиться несколько раз одновременно, чего я не хочу.

Я думал о написании оператора if, который проверял бы, воспроизводится ли звук, а затем приостанавливал его или перезапускал, но я не уверен, что писать внутри if() Я пробовал if(backgroundTheme.play()), но это не сработало… Есть идеи?

Комментарии:

1. Сначала вам нужно переместить свой экземпляр audio из вашей функции, иначе он действительно будет создавать новый экземпляр каждый раз, как только вы это сделаете, вы можете посмотреть свойство paused .

Ответ №1:

Прежде всего — вы должны создать new Audio только один раз и действовать с ним позже.

Имейте глобальную переменную, которая содержит состояние вашего проигрывателя:

 var audioObject;
var isPlaying = false;

const gameSounds = {
  backgroundTheme: function(){
    if (typeof audioObject === 'undefined') {
        audioObject = new Audio('./gameSounds/theme.mp3');
    }

    if(isPlaying){
      backgroundTheme.pause();
    } else {
      backgroundTheme.play();
    }

    isPlaying = !isPlaying;
  }
  

Комментарии:

1. Это сработало как шарм, большое спасибо, вы также знаете, как сделать это циклическим?

2. @Whyudodis codegrepper.com/code-examples/javascript /…