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

[Projeto] Projeto Finalizado

Olá pessoal, parabéns pelo curso, interessantíssimo, eu fiquei encucado pq o som só sai a primeira vez, caso você aperte duas vezes bem rápido na tecla, então fui atras pra ajeitar isso e descobri duas formas, a primeira com o cloneNode:

function tocaSom(seletorAudio) {
   const elemento =  document.querySelector(seletorAudio);

   if (elemento  && elemento.localName === 'audio'){
        const clone = elemento.cloneNode();
        clone.play();

   } else {
    console.log('Elemento não encontrado ou seletor invalido');
        }

}

mas aqui ainda não entendi muito bem o funcionamento, só sei q funciona, mas a segunda forma é o currentTime, que só faz o tempo de execução do audio voltar pra 0, e eu fiquei horas buscando a solução, era só fazer isso haeiuaheai

function tocaSom(seletorAudio) {
   const elemento =  document.querySelector(seletorAudio);

    if (elemento  && elemento.localName === 'audio'){
        elemento.currentTime = 0;
        elemento.play();

   } else {
        console.log('Elemento não encontrado ou seletor invalido');
        }
}
2 respostas
solução!

Oi Aécio, tudo bem?

Muito obrigada pelo seu comentário e pela sua contribuição para aprimorar a atividade proposta no curso.

Ambas as soluções que você mencionou são válidas e funcionam para resolver o problema de o som só tocar uma vez quando pressionamos rapidamente a tecla. A diferença é que a primeira solução utiliza o método cloneNode() para criar um novo objeto de áudio, enquanto a segunda solução simplesmente redefine o tempo de execução do áudio para 0 usando a propriedade currentTime.

A primeira solução com cloneNode() cria uma cópia completa do elemento de áudio original, incluindo todas as suas propriedades e métodos. Isso significa que você pode tocar o som novamente a partir do início usando o método play() do objeto de áudio clonado. A desvantagem é que essa solução pode ser um pouco mais pesada em termos de memória, especialmente se você estiver trabalhando com vários elementos de áudio grandes.

A segunda solução comcurrentTime é mais simples e leve, pois apenas redefine o tempo de execução do áudio para 0 e toca novamente a partir do início. Isso funciona bem para casos em que você só precisa tocar o som do início novamente.

Um abraço e bons estudos.

Obrigado pelo esclarecimento, agora percebi que posso usar para um projeto que estou desenvolvendo, obrigado mesmo :D