![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Apr 2012
Сообщений: 8
|
Доброго времени суток.
Есть короткая мелодия, которая при нажатии кнопки начинает проигрываться до тех пор (или очень долго), пока второй раз не нажать эту кнопку. Кривым языком начинающего (у меня) это должно выглядеть так btn.addEventListener(MouseEvent.CLICK, playsound); function playsound(e:MouseEvent):void { if(temp==1) { sound.stop(0,3000); temp=0; }else{ sound.play(0,3000); temp=1; } } Подскажите, как сделать такое действие. пробовал создавать и удалять листенеры с функцией многократного воспроизведения, но тоже к успеху не пришел |
|
|||||
|
Регистрация: Mar 2010
Сообщений: 48
|
не совсем правильно понимаете как работает Sound, SoundChannel.
рекомендую почитать документацию http://help.adobe.com/ru_RU/FlashPla...nd.html#play() //var sound:Sound; звук, который надо воспроизводить btn.addEventListener( MouseEvent.CLICK, toggleSound ); var soundChannel:SoundChannel = null; function toggleSound( e:MouseEvent = null ):void { if( soundChannel ) { soundChannel.stop(); soundChannel = null; } else { soundChannel = sound.play( 0, 3000 ); } } |
|
|||||
|
Регистрация: Apr 2012
Сообщений: 8
|
Спасибо, работает
![]() таким способом нельзя сделать воспроизведение сразу двух звуков или я не правильно понял? |
|
|||||
|
Регистрация: Mar 2010
Сообщений: 48
|
можно.
для каждого звука свой SoundChannel |
|
|||||
|
Регистрация: Apr 2012
Сообщений: 8
|
так почему то не получается...
btn.addEventListener(MouseEvent.CLICK, playsound); var soundChannel1:SoundChannel = null; var soundChannel2:SoundChannel = null; function playsound(e:MouseEvent):void { if(temp==1) { soundChannel1.stop(); soundChannel1 = null; soundChannel2 = sound2.play( 0, 3000 ); temp=0; }else{ soundChannel2.stop(); soundChannel2 = null; soundChannel1 = sound1.play( 0, 3000 ); temp=1; } } если же после else будет то работать будет только один звук и выключить его не удастся если же воспроизведение засунуть в одни скобки, а стоп в другие, то работают вместе и отключаются тоже Последний раз редактировалось Vasil; 24.04.2012 в 21:09. Причина: дополнение, исправление ошибок |
|
|||||
|
Регистрация: Mar 2010
Сообщений: 48
|
не могу понять какое поведение требуется. нужно чтобы оба звука одновременно включались и выключались или попеременно?
|
|
|||||
|
Регистрация: Apr 2012
Сообщений: 8
|
попеременно. при нечетном нажатии включается sound1, при четном sound2
|
|
|||||
|
Регистрация: Mar 2010
Сообщений: 48
|
Тогда в вашем коде при первом запуске функции playsound произойдет ошибка. Нужно либо при первом запуске обработать это, либо включать один из звуков в начале работы приложения.
В данном случае нужен один SoundChannel (так как звук проигрывается только один) //var sound1:Sound, sound2:Sound; звуки, которые надо воспроизводить btn.addEventListener( MouseEvent.CLICK, toggleSound ); var soundChannel:SoundChannel = null; // канал, изначально звук не проигрывается var currentSound:Sound = null; // текущий звук, изначально не задан function toggleSound( e:MouseEvent = null ):void { switch ( currentSound ) { case null: // если звук еще не проигрывается, выбираем первый звук case sound2: // если проигрывается второй звук, выбираем первый звук currentSound = sound1; break; case sound1: // если проигрывается первый звук, выбираем второй звук currentSound = sound2 break; } if ( soundChannel ) { // если сейчас проигрывается звук, останавливаем его soundChannel.stop(); } soundChannel = currentSound.play( 0, 3000 ); // включаем проигрывание нового звука } |
|
|||||
|
Регистрация: Apr 2012
Сообщений: 8
|
спасибо Вам огромное
очень помогли |
![]() |
![]() |
Часовой пояс GMT +4, время: 00:22. |
|
|
« Предыдущая тема | Следующая тема » |
|
|