Не работает звук включения / выключения 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;
}
Другие вопросы по тегам