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

delay para apertar o botão novamente

Adorei o jeito como já é apresentado o javascript na prática sei que foge um pouco da aula, mas gostaria de saber alguma solução para o seguinte: quando apertamos um dos botões(o toim é o que mais dá para perceber) para você poder apertar de novo tem que esperar o som ser reproduzido até o final, gostaria de saber uma possibilidade para que ao apertar o botão novamente ele encerre o som que está sendo reproduzido e já toque novamente, mais como curiosidade mesmo e para aprender mais.

obrigado

3 respostas
solução!

Oi Lucas, tudo certo?

Que bom que está gostando do JavaScript na prática! Fico feliz que você tenha essa curiosidade para ir além da aula, isso nos leva a aprender ainda mais. Bom, uma maneira bem simples de evitar esse "delay" seria aplicar um currentTime = 0 na sua função tocaSom, da seguinte maneira:

function tocaSom (idElementoAudio) {
    const elemento = document.querySelector(idElementoAudio);
    elemento.currentTime = 0;
    elemento.play();

}

Esse currentTime dentro da função permite que ao clicarmos (onclick) em algum botão do Alura Midi, antes de darmos o play() no áudio, parar a reprodução e voltar para o início do tempo caso aquele áudio já tenha sido clicado e esteja sendo reproduzido no momento. Isso pode ser feito atribuindo o valor “0” ao atributo currentTime, que armazena a posição(tempo) em que o áudio está sendo executado. Assim, a cada clique, o áudio volta a ser reproduzido do início, sem o delay.

Espero ter esclarecido sua dúvida. Se tiver mais alguma, me coloco à disposição!

Um abraço e bons estudos!

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

Muito obrigado, bem simples fazer desse jeito!!

Sensacional, Rafaela (e valeu pelo Lucas ter perguntado rs) ! Muito obrigado pela dica. Implementei no meu projeto também.