Detener la música al sacar el mouse

Tengo un clip de película que tiene este script adjunto (reproduce un clip de sonido al pasar el mouse); el problema es que si muevo el mouse, necesito detener el clip de sonido. En este momento, simplemente comienza de nuevo mientras todavía se está reproduciendo (al pasar el mouse) == no es bueno.

¿Alguien tiene una solución? Traté de hacer un MOUSE_OUT evento y un .stop(); pero no parece funcionar. ¡Gracias!

import flash.media.Sound;
import flash.media.SoundChannel;

//Declare a BeepSnd sound object that loads a library sound.
var BeepSnd:BeepSound = new BeepSound();
var soundControl:SoundChannel = new SoundChannel(); 

somebutton.addEventListener(MouseEvent.MOUSE_OVER,playNoises);
somebutton.addEventListener(MouseEvent.MOUSE_OUT,stopNoises);

function playNoises(event:Event){
    playSound(BeepSnd);
}

function playSound(soundObject:Object) {
    var channel:SoundChannel = soundObject.play();
}

function stopNoises(event:Event){
    stopSound(BeepSnd);
}

function stopSound(soundObject:Object) {
    var channel:SoundChannel = soundObject.stop();
}

Me sale este error:

TypeError: Error #1006: stop is not a function.
at radio_fla::MainTimeline/stopSound()
at radio_fla::MainTimeline/stopNoises()

preguntado el 10 de mayo de 11 a las 13:05

¿Podrías publicar el código completo? ¿Dónde detienes el sonido? -

Este es el código completo, no hay ningún lugar donde lo detenga. Necesito incorporar esto. :-) -

Dijiste que trataste de agregar un MOUSE_OUT evento y un .stop();, si publica ese código, tal vez alguien pueda decirle por qué no funcionó -

3 Respuestas

Debe mantener una referencia al SoundChannel creado al tocar un Sound. Una Sound representa un sonido, mientras que un SoundChannel representa el reproducción de un sonido, y es la reproducción, lo que desea detener.

import flash.media.Sound;
import flash.media.SoundChannel;

//Declare a BeepSnd sound object that loads a library sound.
var BeepSnd:BeepSound = new BeepSound();
var soundControl:SoundChannel;

somebutton.addEventListener(MouseEvent.MOUSE_OVER,playNoises);
somebutton.addEventListener(MouseEvent.MOUSE_OUT,stopNoises);

function playNoises(event:Event){
    playSound(BeepSnd);
}

function playSound(soundObject:Object) {
    soundControl = soundObject.play();
}

function stopNoises(event:Event){
    stopSound();
}

function stopSound() {
    if (soundControl) {
        soundControl.stop();
        soundControl = null;
    }
}

contestado el 10 de mayo de 11 a las 17:05

Ok, el problema es que en realidad tienes que llamar al método de detención en el objeto de canal, no en el objeto de sonido: channel.stop(). También puede considerar usar ROLL_OVER/OUT en lugar de MOUSE_OVER/OUT, pero esto no tiene nada que ver con tu problema, por supuesto.

contestado el 10 de mayo de 11 a las 17:05

Intente utilizar MouseEvent.ROLL_OVER Y MouseEvent.ROLL_OUT en lugar de MOUSE_OVER y MOUSE_OUT.

contestado el 10 de mayo de 11 a las 17:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.