![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Aug 2010
Сообщений: 3
|
Совсем недавно стал баловаться с AS3. Решил сделать для своего сайта плеер потока, собственного. Сделал.
Лицезреть его можно тут: http://tunebow.com (на главной страничке) Но, сделав, заметил проблему. Если запустить его первый раз после загрузки странички, всё работает, но если вы его остановите, второй раз не запускается, хоть ты тресни, хотя в компиляторе работает, зависает только с 5го раза стоп/пуск. А на сайте, творит чудеса. Кнопка плей - событие завязанное на клике, воспроизводит звук и начинает рисовать графику. Кнопка стоп - полная остановка всех звуков. Подскажите, почему так..как исправить, уже голову себе сломал... Буду очень благодарен. ![]() |
|
|||||
|
Я тут недавно делал потоковый плеер и столкнулся с той же самой проблемой. Для остановки звука надо остановить воспроизведение канала, закрыть загрузку потока и удалить звук. А потом чтобы воспроизвести его снова, ты создаешь его заново. Вот как я решил эту проблему:
// При нажатии на кнопку PlayStopBtn вызывается эта функция private function onClickPlayBtn(e:MouseEvent):void { if (isPlaying) { channel.stop(); sound.close(); sound = null; } else { sound = new Sound(new URLRequest(RADIO_URL)); channel = sound.play(0); } isPlaying = !isPlaying; } Кстати а ты знаешь что потоковый плеер загружает песню в оперативную память? То есть если плеер не закрыть или не остановить, то будет утечка памяти. |
|
|||||
|
Регистрация: Aug 2010
Сообщений: 3
|
Вот мой код, не получается всё равно. Теперь ещё и рисовать не хочет прямо на сайте. Но в тесте, когда запускаешь HTML страничку только с ним - работает рисовалка (в компиляторе тоже рисует).
import flash.media.Sound; Pause_btn.addEventListener(MouseEvent.CLICK, music_ClickToPlayStopSound); Play_Stop_btn.addEventListener(MouseEvent.CLICK, music_ClickToPlayStopSound); var music:SoundChannel; var test:Boolean = true; function music_ClickToPlayStopSound(evt:MouseEvent):void { if (test) { var s:Sound = new Sound(new URLRequest("http://www.tunebow.com:9000/tunebow")); music = s.play(); var ba:ByteArray = new ByteArray(); var gr:Sprite = new Sprite(); gr.x = 166; gr.y = 59; addChild(gr); var time:Timer = new Timer(50); time.addEventListener(TimerEvent.TIMER, timerHandler); time.start(); function completeHandler(event:Event):void { event.target.play(); } function soundCompleteHandler(event:Event):void { time.stop(); } function timerHandler(event:TimerEvent):void { SoundMixer.computeSpectrum(ba, false); var i:int; gr.graphics.clear(); gr.graphics.lineStyle(0, 0x69C6E8); gr.graphics.beginFill(0xE6E7E8); gr.graphics.moveTo(0, 0); var w:int = 5; for (i=0; i<370; i+=w) { var t:Number = ba.readFloat(); var n:Number = (t * 50); gr.graphics.drawCircle(i, w, -n); } } Play_Stop_btn.visible = false; } else { music.stop(); Play_Stop_btn.visible = true; //s.close(); //s = null; } test = !test; } Цитата:
Ладно, рисование графики решил проблему, а вот с незапуском повторным на сайте не могу никак. Что-то не то и не понятно что... |
|
|||||
|
У тебя код написан неправильно.
Вот так должно работать: import flash.media.Sound; Pause_btn.addEventListener(MouseEvent.CLICK, music_ClickToPlayStopSound); Play_Stop_btn.addEventListener(MouseEvent.CLICK, music_ClickToPlayStopSound); var music:SoundChannel; var test:Boolean = true; var s:Sound; function music_ClickToPlayStopSound(evt:MouseEvent):void { if (test) { s = new Sound(new URLRequest("http://www.tunebow.com:9000/tunebow")); music = s.play(); Play_Stop_btn.visible = false; } else { music.stop(); s.close(); s = null; Play_Stop_btn.visible = true; } test = !test; } |
|
|||||
|
Регистрация: Aug 2010
Сообщений: 3
|
Ага, углядел свою ошибку. Описывал переменные не в том месте, вот он и выкидывал null. Спасибо большое за помощь!!!!!
|
![]() |
![]() |
Часовой пояс GMT +4, время: 00:32. |
|
|
« Предыдущая тема | Следующая тема » |
|
|