Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Аудиоплеер на flash. (http://www.flasher.ru/forum/showthread.php?t=145869)

ShitZu 21.10.2010 19:05

Аудиоплеер на flash.
 
Доброго времени суток.
Возникла необходимость реализовать через flash плеер,который будет принимать аудиопоток с сервера.
Так как с AS ранее сталкивался лишь косвенно,возникло несколько вопросов)
Нужно,чтобы при нажатии на кнопку начиналось воспроизведение потока(избражение кнопки меняется на то что проставлено в кадре "down") ,при повторном нажатии на нее же ,останавливалось.(кнопка сбрасывается на состояние по дефолту.)
Код:


stop();

play_buttn.addEventListener(MouseEvent.CLICK,act_1);

function act_1(Event:MouseEvent)//функция кнопки "play" 1е нажатие
{
        import flash.media.Sound;
    import flash.media.SoundLoaderContext;
    import flash.net.URLRequest;
 
    var s = "Global"; //  запиливаем "s" как глобальную перменную
    var req:URLRequest = new URLRequest("адрес сервера");
    var context:SoundLoaderContext = new SoundLoaderContext(1000, true);
    s = new Sound(); // определяем s
    s.load(req, context); // грузим поток
    s.play(); // слушаем.
       
    play_buttn.addEventListener(MouseEvent.CLICK,act_2); // 2 нажатие  - останавливает загрузку.
    function act_2(Event:MouseEvent)
        {
                s.stop();

                }


}

Естественно сие недоразумение творение работает...не совсем так как нужно
Подскажите,пожалуйста,как это исправить?
Заранее спасибо.

AlexDesinger 21.10.2010 19:59

пишите код в классах:
Код AS3:

package 
{
 
        import flash.media.Sound;
        import flash.events.MouseEvent;
        import flash.media.SoundLoaderContext;
        import flash.net.URLRequest;
 
        public class Main extends MovieClip
        {
 
                var s:Sound;//  запиливаем "s" как глобальную перменную
                var req:URLRequest;
                var context:SoundLoaderContext;
 
                private var played:Boolean = false;
 
                public function Main()
                {
                        s = new Sound();// определяем s
                        req = new URLRequest("адрес сервера");
                        context = new SoundLoaderContext(1000,true);
 
                        play_buttn.addEventListener(MouseEvent.CLICK,act_1);
 
                }
                private function act_1(e:MouseEvent):void
                {
                        var playBtn:MovieClip = e.target as MovieClip();
 
                        if (! played)
                        {
                                playBtn.gotoAndStop(2);
                                s.load(req, context);// грузим поток
                                s.play();// слушаем.
                        }
                        if(played)
                        {
                                playBtn.gotoAndStop(1);
                                s.stop();
                        }
                        played = ! played;
                }
        }
}

не тестировал, возможно ошибку выдаст, если что опишите, поправлю - потестить нет времени.

ShitZu 21.10.2010 21:19

Спасибо)
Как раз нашел решение проблемы...все оказалось проще.(через свойства видимости кнопки е т ц)

Вопрос номер 2:
Пытаюсь проверить доступность сервера внутри функции act_1(то есть при загрузке потока,дабы в случаи 404 выдать сообщение):
Код AS3:

....
 
if (s.isBuffering == false)
          {
                  try //останавливаем воспроизведение
              {
                      s_Chan.stop();
                      s_Chan = s.play(0);
                      s_Chan.stop();
                      s.close();
                }
                  catch(e:Error){
                      s_Chan.stop();
                      s_Chan = s.play(0);
                      s_Chan.stop();
    }
                  play_buttn.visible = true;    //возвращаем кнопки в исходное состояние                   
                  stop_buttn.visible = false;
 
                  //далее отправка сообщения в текстполе
                  }

isBuffering,я так понимаю тут лишнее,ибо ничего не дает
Не подскажете какую-нибудь альтернативу?

gloomyBrain 21.10.2010 21:34

Цитата:

Код AS3:

try {
        s_Chan.stop();
        s_Chan = s.play(0);
        s_Chan.stop();
        s.close();
} catch(e:Error) {
        s_Chan.stop();
        s_Chan = s.play(0);
        s_Chan.stop();
}


Да, плохо дело... =) Понимаю, что Вам некогда, но все же стоило бы почитать доки, там все есть.

in4core 21.10.2010 21:54

Цитата:

Да, плохо дело... =)
lol lol lol

AlexDesinger 22.10.2010 11:08

Цитата:

Спасибо)
Как раз нашел решение проблемы...все оказалось проще.(через свойства видимости кнопки е т ц)
ппц, ну ладно, как знаете +)

Hidest 22.10.2010 14:01

Цитата:

Сообщение от ShitZu (Сообщение 944422)
var s = "Global"; // запиливаем "s" как глобальную перменную

Что это?

AlexDesinger 22.10.2010 16:17

Цитата:

Что это?
не прьтесь, ввиду того, что код написан в кадре, остальное можно не читать.

cleptoman 22.10.2010 18:08

господа in4core и AlexDesigner, я вас призываю к большей толерантности к новичкам в вопросе и их топикам..все мы такие были.
если нечего по делу сказать/спросить, лучше не писать вообще, учитывая, что сами то не далеко пока ушли (ИМХО)

п.с. сори за оффтоп, просто читать противно
п.п.с если код рабочий, то он будет и в кадре работать

djyamato 22.10.2010 18:31

Цитата:

Сообщение от cleptoman (Сообщение 944658)
п.п.с если код рабочий, то он будет и в кадре работать

Поддерживаю


Часовой пояс GMT +4, время: 14:54.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.