1
resposta

Gostaria de adicionar um pause na função

Olá, pessoal! Ao término do curso com o projeto concluído eu comecei a mexer por conta própria e fazer algumas alterações e pôr algumas músicas para praticar, e dois problemas que surgiram foi de que se eu clicar em uma opção para tocar uma música as outras não param de tocar juntas e fica uma bagunça que só, além de também não conseguir pausar uma música quando eu quiser. Já tentei de diversas formas, tanto como uma nova função quanto dentro da primeira função (mencionada abaixo) e gostaria muito de fazer essa adição, embora seja algo simples foi uma ideia que surgiu enquanto estava estudando e gostaria de concluir esse exercício. Alguém mais experiente consegue ajudar esse jovem gafanhoto? Ficarei muito grato.

//Essa é a função do curso apenas com a adição do "currentTime"

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

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

    } else {

        //alert('Elemento não encontrado')
        console.log('Elemento não encontrado ou seletor inválido');

    }
}

///////////// Tentei duas opções:

A) Uma possível outra função

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

    if(elemento.playing){
    elemento.pause();
    }
}

B)Adicionar o botão pause na primeira função

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

} else if(elemento.playing) {
    elemento.pause
    }

}
1 resposta

Opa Felipe, como vai?

Pedimos desculpa pela resposta tardia.

Testei o seu primeiro código e não percebi o erro comentado, nesse caso, como adicionou diversos arquivos diferentes e fez suas alterações fora somente do javascript, peço que por gentileza compartilhe seu código completo conosco, seja via github ou um drive com seus arquivos.

Quanto a pausa, para pausarmos todos os sons podemos utilizar a função .pause() no áudio tocando no momento, para isso:

  • 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) { // se houver um áudio sendo reproduzido atualmente, pausa a reprodução antes de tocar o novo áudio
       audioAtual.pause();
   }
   elemento.play();
   audioAtual = elemento; // atribui o novo elemento de áudio à variável global
} 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 ✓.