#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 /…