Остановить музыку при помощи мыши - PullRequest
1 голос
/ 10 мая 2011

У меня есть мувиклип, к которому прикреплен этот скрипт (воспроизводит звуковой клип при наведении курсора) - проблема в том, что если я перемещаю мышь, мне нужно остановить звуковой клип. Прямо сейчас он просто начинается снова, пока он все еще играет (при наведении мыши) == не хорошо.

У кого-нибудь есть решение? Я пытался создать событие MOUSE_OUT и .stop();, но, похоже, оно не работает. Спасибо!

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();
}

Я получаю эту ошибку:

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

Ответы [ 3 ]

4 голосов
/ 10 мая 2011

Вам необходимо сохранить ссылку на SoundChannel, созданную при воспроизведении Sound.Sound представляет звук, а SoundChannel представляет воспроизведение звука, и это воспроизведение, которое вы хотите остановить.

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;
    }
}
1 голос
/ 10 мая 2011

Попробуйте использовать MouseEvent.ROLL_OVER и MouseEvent.ROLL_OUT вместо MOUSE_OVER и MOUSE_OUT.

1 голос
/ 10 мая 2011

Хорошо, проблема в том, что вам действительно нужно вызвать метод stop для объекта канала, а не для звукового объекта: channel.stop().Также вы можете рассмотреть возможность использования ROLL_OVER/OUT вместо MOUSE_OVER/OUT, но это, конечно, не имеет отношения к вашей проблеме.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...