Управление звуком на кнопке во Flash CS5
Я новичок во флэш, так что прошу прощения за вопрос, если это супер новичок.
В моих флеш-документах я создаю несколько кнопок на странице, которые будут вызывать звук при нажатии пользователем данной кнопки. Длительность прикрепляемого аудио составляет от 1 до 2 минут, поэтому я хочу дать пользователю возможность отключить звук для данного произведения, если они того пожелают. Я сделал это с помощью кнопки на странице со следующим AS3:
import flash.media.SoundMixer;
myButton.addEventListener(MouseEvent.CLICK,fn_clickHandler);
function fn_clickHandler(IN_Event:MouseEvent):void
{
SoundMixer.stopAll();
}
Я хочу убедиться, что пользователь не проигрывает более одного звука одновременно, может кто-нибудь сообщить мне, как это применить?
Спасибо
1 ответ
Я не совсем уверен, что полностью понял ваш вопрос. Но если я сделал это правильно, то вот ответ:
import flash.events.MouseEvent;
import flash.media.Sound;
import flash.media.SoundChannel;
var SChannel : SoundChannel;
var sound : Sound;
// your sound managing buttons
sound_1.addEventListener ( MouseEvent.CLICK, handleChangeSound );
sound_2.addEventListener ( MouseEvent.CLICK, handleChangeSound );
sound_3.addEventListener ( MouseEvent.CLICK, handleChangeSound );
// sound off button
turn_off.addEventListener ( MouseEvent.CLICK, turnOffSound );
// sound off managining function
function turnOffSound ( e : MouseEvent ) : void
{
SChannel.stop();
SChannel = null;
sound = null;
}
// are sounds in your library Sound_1 (), Sound_2 (), Sound_3 ()
function handleChangeSound ( e : MouseEvent ) : void
{
// in my situation since the button names were sound_1, .._2, .._3
// i can extract the sound id from names of the button.
// if you have some different approach you just need to adopt it.
var soundID : uint = e.target.name.split ( '_' )[1];
// ifi sound is playing, stop it
if ( SChannel )
{
turnOffSound(null);
}
// create new sound, from ID given
switch ( soundID )
{
case 1 :
sound = new Sound_1 ();
break;
case 2 :
sound = new Sound_2 ();
break;
case 3 :
sound = new Sound_3 ();
break;
}
// if sound was in the list start playing it.
if ( sound )
{
SChannel = sound.play();
}
}
И, кстати, использовать SoundMixer
, только когда вы ссылаетесь на всю флеш-страницу, чтобы замолчать.