es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Forma de detener cualquier sonido que se esté reproduciendo previamente (base64) en JavaScript antes de reproducir el siguiente sonido.

Tengo una función de Javascript que reproduce un sonido en particular a partir de un texto plano base64. Lo que busco creo que es bastante simple, pero no estoy nada familiarizado con js, ya que en realidad estoy usando js en R como parte de una aplicación brillante. Simplemente busco una forma de que cuando se llame a esta función, cancelará cualquier sonido que se esté reproduciendo anteriormente de la misma o una función similar que ya esté reproduciéndose:

shinyjs.soundmaker = function() {
var snd = new Audio("data:audio/wav;base64,blablablabla");
snd.play();
}

¡Cualquier ayuda sería genial!

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para cancelar cualquier sonido que se esté reproduciendo desde la misma o similar función previamente, simplemente se puede agregar un método pause() antes de crear el nuevo objeto de sonido de la siguiente manera:

    shinyjs.soundmaker = function() {
    if(shinyjs.prevSound){
    shinyjs.prevSound.pause();
    }
    var snd = new Audio(“data:audio/wav;base64,blablablabla”);
    snd.play();
    shinyjs.prevSound = snd;
    }

    Aquí, una nueva variable shinyjs.prevSound se utiliza para almacenar el objeto de sonido que se estaba reproduciendo previamente. Antes de reproducir un nuevo sonido, primero verificamos si hay algún sonido que se esté reproduciendo comprobando si shinyjs.prevSound está definido. Si shinyjs.prevSound está definido, lo pausamos utilizando el método pause(). Esto detendrá cualquier sonido que se esté reproduciendo previamente desde la misma o similar función.

    Después de pausar el sonido anterior, creamos un nuevo objeto Audio y lo reproducimos utilizando el método play(). Finalmente, actualizamos la variable shinyjs.prevSound con el nuevo objeto de sonido.

    Al hacer esto, cualquier sonido que se esté reproduciendo previamente se pausará antes de reproducir uno nuevo, asegurando que solo se reproduzca un sonido a la vez.

Comments are closed.