Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] Como interromper a execução ou sobrepô-la ?

Olá,

Terminei o curso e percebi que quando tocamos um botão ele precisa tocar até o fim para ser executado novamente. Existe uma maneira de fazer com que o som pare no meio da execução e toque novamente, ou ainda, que o som do segundo toque sobreponha o primeiro? Assim como acontece na vida real.

Abraços.

1 resposta
solução!

Opa Walter, tudo certo?

Para pausar o som quando outro tocar podemos utilizar a função .pause(), podendo ser usada para pausar vídeos e áudios.

  • 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.

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