Si actualizo una URL, la reproducción de audio funciona, pero la próxima vez en adelante no se reproduce (se reproduce aleatoriamente). Usé Phaser Framework con Javascript.
Aquí está mi código:
function OtpAudio(product) { game.load.audio('theme', ['../../../product_assets/'+product+'/audio/eng/OTP.mp3' ]); var music = game.sound.add('theme'); music.play(); console.log(music); }Estoy tratando de llamar a la función anterior varias veces, pero solo funciona la primera vez, como mencioné. Por favor ayúdame con esto.
game.sound.add('theme', { loop: true });Puede usar el código anterior si desea reproducir música en bucle.
Supongo que la primera vez que suena la música es después de hacer clic en un enlace más o menos. Y no se reproduce cuando recargas el sitio.
La razón es que el navegador impide reproducir audio sin la interacción del usuario.
Si revisa la consola del navegador, puede ver un error como:
DOMException: play() failed because the user didn't interact with the document first. ...
Para evitar esto, puede verificar en la función de create si this.sound.locked==true , esto significaría que no se puede reproducir el sonido, y luego puede solicitar al usuario que haga clic/toque/interactúe/... con el navegador, y en la siguiente interacción empiezas el sonido.
Detalles de la documentación de sonido locked : https://photonstorm.github.io/phaser3-docs/Phaser.Sound.WebAudioSoundManager.html#locked__anchor
Un enfoque alternativo más simple sería verificar cualquier evento de usuario, si el audio se está reproduciendo. Es importante verificar si music.isPlaying == false y this.sound.locked==false y si ambos coinciden, puede llamar a music.play() la música.