Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

ACABAR UM AÚDIO AO INICIAR O OUTRO?

Boa noite, pessoal..

Seguinte, fiz um projeto usando as diretrizes desse curso e funcionou corretamente, tudo ok... a diferença é que no meu projeto, os aúdios são maiores, sendo assim, as vezes eu clico em botão, ele começa a tocar e outro aúdio ainda nem foi finalizado.

Minha dúvida é: Como crio algum comando que quando eu selecionar um botao, ele encerro o outro antes de começar a tocar?

2 respostas
solução!

Opa Luis, como vai?

Ótima pergunta.

Para pausarmos todos os sons podemos criar utilizar a função .pause(), podendo ser usada para pausar vídeos e aúdios.

  • Primeiramente criamos uma variável local chamada audioAtual, ela vai ser responsável por armazenar o elemento de áudio atualmente reproduzido, atribuiremos por enquanto o valor “null" indicando que nenhum som está sendo reproduzido atualmente:
let audioAtual = null;
  • Na nossa função de tocaSom, iremos adicionar um novo if que será responsável por pausar o áudio caso já haja um áudio sendo tocado. Verificando sempre que um novo som é reproduzido se já outro tocando:
if (audioAtual != null) { 
   audioAtual.pause();
}

Por fim, quando um som é reproduzido o valor da variável é atualizado com o elemento de áudio correspondente:

if (elemento != null && elemento.localName === 'audio') {
   if (audioAtual != null) {
       audioAtual.pause();
   }
   elemento.play();
   audioAtual = elemento;
} else {
    console.log('Elemento não encontrado ou seletor inválido');
}

Prontinho!

Se for de seu interesse entender mais sobre o pause(), vou estar deixando, logo abaixo a documentação da mesma:

Caso tenha mais dúvidas ou problemas com relação a este tópico, estarei à disposição para ajudá-lo. Grande abraço!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.

Gabriel, muito obrigado pela resposta!!! Você é fera!