#flash #actionscript-3 #actionscript #flash-cs5
#вспышка #ActionScript-3 #ActionScript #flash-cs5
Вопрос:
Я пытаюсь создать простую интерактивную флеш-анимацию, чтобы при нажатии на невидимую кнопку воспроизводился звук из библиотеки, а затем при развертывании звук прекращался.
Пока у меня есть это
import flash.events.Event;
import flash.media.SoundChannel;
stop();
button1.addEventListener(MouseEvent.ROLL_OVER,playSound);
function playSound(event:Event) {
var mySound:elmosample = new elmosample();
var myCahnnel:SoundChannel = mySound.play();
}`
Есть ли способ остановить воспроизведение звука с помощью ROLL_OUT или остановить текущий звук при запуске нового?
Ответ №1:
может быть, написать функцию при развертывании? что-то вроде
button1.addEventListener(MouseEvent.ROLL_OUT,stopSound);
и при одновременном воспроизведении только одной песни, может быть, поместить имя переменной звука в один массив и использовать только один канал? но я не уверен, как вы воспроизводите новый звук, поэтому я не могу дать вам четкий ответ
надеюсь, это поможет
Комментарии:
1. Я написал новую функцию button2.addEventListener(MouseEvent.ROLL_OUT,stopSound); функция stopSound(событие:Событие) { var MySound:elmosample1 = новый elmosample1(); var Myc nnel:SoundChannel = MySound.stop(); } но теперь получаю ошибку вывода TypeError: ошибка #1006: остановкане является функцией. в _fla::MainTimeline/stopSound()
2. вы не можете использовать sound class для остановки звука в AS3, используя его канал, поэтому попробуйте MyChannel.stop(); это кажется хорошим решением: republicofcode.com/tutorials/flash/as3sound
Ответ №2:
import flash.events.Event;
import flash.media.SoundChannel;
stop();
var mySound:Sound;
var myChannel:SoundChannel;
button1.addEventListener(MouseEvent.ROLL_OVER, onRollOver);
button1.addEventListener(MouseEvent.ROLL_OUT, onRollOut);
function onRollOver(e:Event):void
{
//stop previous sounds
if(myChannel)
myChannel.stop();
mySound = new elmosample();
myChannel = mySound.play();
}
function onRollOut(e:Event):void
{
myChannel.stop();
}