1
resposta

Alterei o arquivo em tempo de execução

Coloquei um callback no evento onended para exibir o alerta depois de tocar o som e utilizei a mesma constante de áudio, alterando o arquivo em tempo de execução com src.

const somDeAlerta = new Audio();
function tocaSomPausa()
{
    somDeAlerta.src = './sons/beep.mp3';
    somDeAlerta.loop = false;
    somDeAlerta.play();

    somDeAlerta.onended = () => alert('Tempo finalizado!');
}

function contagemRegressiva() {
    if (tempoDecorridoEmSegundos <= 0) {
        zerar();
        tocaSomPausa(()=>exibeAlerta);


    }
    tempoDecorridoEmSegundos -= 1
    console.log('Temporizador: ' + tempoDecorridoEmSegundos)
}

startPauseBt.addEventListener('click', iniciarPausar);

function iniciarPausar() {
    if (intervaloId) {
        somDeAlerta.src = './sons/pause.mp3';
        somDeAlerta.loop = false;
        somDeAlerta.play();
        zerar();
        return;
    }
    somDeAlerta.src = './sons/play.wav';
    somDeAlerta.loop = false;
    somDeAlerta.play();
    intervaloId = setInterval(contagemRegressiva, 1000); // Executa a função contagemRegressiva a cada 1 segundo
}

function zerar() {
    clearInterval(intervaloId);
    intervaloId = null;
}
1 resposta

Olá, Diego! Como vai?

Seu código está bem criativo! A ideia de reutilizar a mesma instância do objeto Audio alterando o src para diferentes sons é uma solução elegante, reduzindo a necessidade de criar múltiplas variáveis. Gostei também da utilização do evento onended para exibir o alerta após a reprodução do som, o que garante uma experiência fluida para o usuário.

Parabéns pelo trabalho e continue compartilhando suas soluções no fórum, estamos aqui para te apoiar!

Siga firme nos seus estudos!

Abraços :)