El audio se reproduce cuando el usuario interactúa con la ventana; sin embargo, cuando el audio finaliza, no registra "audio finalizado".
let audio = new Audio(); window.onclick = () => { if (audio.paused) pickMusic().play(); }; audio.onended = () => { console.log("audio ended"); }; function pickMusic() { switch (Math.floor(Math.random() * 1)) { case 0: return (audio = new Audio("/music/gorp.mp3")); break; case 1: return (audio = new Audio("/music/gorp.mp3")); break; } }
<p>Click anywhere!</p>
Cuando llame a new Audio()
, anulará el audio anterior que ya está adjunto con un evento onended
.
En este caso, siempre que llame a new Audio()
, también debe inicializar el evento onended
una vez más
let audio = new Audio() window.onclick = () => { if (audio.paused) pickMusic().play(); }; function pickMusic() { switch (Math.floor(Math.random() * 1)) { case 0: audio = new Audio("http://commondatastorage.googleapis.com/codeskulptor-assets/jump.ogg") audio.onended = () => { console.log("audio ended"); }; return audio; case 1: audio = new Audio("http://commondatastorage.googleapis.com/codeskulptor-assets/week7-brrring.m4a") audio.onended = () => { console.log("audio ended"); }; return audio; } }
<p>Click anywhere!</p>