ActionScript - sonido en actionscript

 
Vista:

sonido en actionscript

Publicado por domart (1 intervención) el 14/06/2007 18:15:25
HOla a todos. llevo un buen rato intentando resorver una duda y no lo consigo. a ver si me podeis ayudar. Tengo un sonido en flash que se reproduce cuando le doy a la tecla A. quiero que ese sonido se reproduzca hasta el final. aunque mienras esté sonando se vuelva a pulsar la tecla A. Ahora mismo cada vez que pulso la tecla se activa el sonido, y esta reproduciendose 3 o 4 veces al mismo tiempo. GRacias a todos!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Solución para reproducir un sonido hasta el final al pulsar la tecla A

Publicado por Alejandro (369 intervenciones) el 23/06/2023 17:11:36
Para lograr que el sonido se reproduzca hasta el final y evitar que se reproduzca varias veces simultáneamente al pulsar la tecla A repetidamente, puedes utilizar una variable para verificar si el sonido ya está reproduciéndose.

Aquí tienes una posible solución:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
var sonido:Sound = new Sound(); // Crea una instancia del objeto Sound
var canal:SoundChannel; // Variable para almacenar el canal de reproducción
 
// Carga el archivo de sonido en el objeto Sound
sonido.load(new URLRequest("nombre_del_sonido.mp3"));
 
stage.addEventListener(KeyboardEvent.KEY_DOWN, reproducirSonido);
 
function reproducirSonido(event:KeyboardEvent):void {
    if (event.keyCode == Keyboard.A) {
        if (!canal || !canal.hasEventListener(Event.SOUND_COMPLETE)) {
            // Verifica si el canal no existe o no tiene un evento SOUND_COMPLETE activo
            canal = sonido.play(); // Reproduce el sonido y almacena el canal de reproducción
            canal.addEventListener(Event.SOUND_COMPLETE, sonidoCompleto); // Agrega un evento para detectar el final del sonido
        }
    }
}
 
function sonidoCompleto(event:Event):void {
    canal.removeEventListener(Event.SOUND_COMPLETE, sonidoCompleto); // Elimina el evento SOUND_COMPLETE del canal
    canal = null; // Resetea la variable del canal de reproducción
}

En este código, hemos agregado un controlador de eventos `KeyboardEvent.KEY_DOWN` al `stage` para detectar cuando se presiona una tecla. Dentro del controlador, verificamos si la tecla presionada es la tecla "A". Luego, verificamos si el canal de reproducción `canal` no existe o no tiene un evento `Event.SOUND_COMPLETE` activo. Si se cumple esta condición, reproducimos el sonido utilizando el método `play()` del objeto `Sound` y almacenamos el canal de reproducción en `canal`. También agregamos un evento `Event.SOUND_COMPLETE` al canal para detectar el final del sonido. Cuando el sonido se completa, eliminamos el evento `SOUND_COMPLETE` del canal y reiniciamos la variable `canal`.

De esta manera, al pulsar la tecla A repetidamente, el sonido se reproducirá una sola vez y se reproducirá completamente antes de poder activarse nuevamente.

Recuerda reemplazar "nombre_del_sonido.mp3" con la ruta y nombre de tu archivo de sonido.

Espero que esta solución resuelva tu problema.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar