Не работает звук включения / выключения Actionscript
В основном у меня две кнопки вкл / выкл. Если я нажимаю кнопку ВКЛ более одного раза во время воспроизведения звука, кнопка ВЫКЛ больше не работает, поэтому я не могу остановить звук. Может кто-нибудь помочь?
import flash.media.Sound;
import flash.media.SoundChannel;
import flash.events.MouseEvent;
var mySound:Sound = new Classical_snd();
var myChannel:SoundChannel = new SoundChannel();
myChannel.stop();
soundON_btn.addEventListener(MouseEvent.CLICK, soundON);
function soundON(event:MouseEvent):void{
myChannel = mySound.play();
}
soundOFF_btn.addEventListener(MouseEvent.CLICK,soundOFF);
function soundOFF(event:MouseEvent):void{
myChannel.stop();
}
1 ответ
Решение
Причина, по которой это происходит, заключается в том, что каждый раз, когда вы звоните mySound.play()
новый объект SoundChannel для воспроизведения звука генерируется и возвращается этим вызовом функции. Так что если вы вызываете его дважды, самый последний объект SoundChannel сохраняется в вашем myChannel
переменная; однако, любой ранее SoundChannel
Сгенерированный объект потерян, потому что у вас больше нет ссылки на него, и он продолжает играть.
Я бы попробовал это:
import flash.media.Sound;
import flash.media.SoundChannel;
import flash.events.MouseEvent;
var mySound:Sound = new Classical_snd();
var myChannel:SoundChannel = new SoundChannel();
myChannel.stop();
var musicPlaying:Boolean = false;
soundON_btn.addEventListener(MouseEvent.CLICK, soundON);
function soundON(event:MouseEvent):void{
if( !musicPlaying ) {
myChannel = mySound.play();
musicPlaying = true;
}
}
soundOFF_btn.addEventListener(MouseEvent.CLICK,soundOFF);
function soundOFF(event:MouseEvent):void{
myChannel.stop();
musicPlaying = false;
}