Как отправить сообщение на сцену, если поток AS3 FLVPlayback не найден - PullRequest
0 голосов
/ 10 марта 2011

Я успешно создал компонент FLVPlayback, используя библиотеку компонентов, и он воспроизводит потоковое видео, которое мне нужно.У меня вопрос: если этот поток не подключен к сети или не может быть найден, как мне показать сообщение на сцене, чтобы пользователь знал, что активного потока нет.

ОБНОВЛЕНО: Вот мой код -

thestream.addEventListener(NetStatusEvent.NET_STATUS, onNCStatus);
function onNCStatus(event:NetStatusEvent):void {
    trace(event.info.code)
    switch (event.info.code) {
        case "NetConnection.Connect.Success":
            trace("Success");
            break;
        case "NetStream.Play.StreamNotFound":
            trace("Stream not found");
            break;
    }   
}

Нет вывода.Кажется, что функция не вызывается.Однако, если я помещаю трассировку вне функции (перед ней), я получаю ответ:

trace(NetStatusEvent.NET_STATUS);

на выходе:

netStatus

Надеюсь, это поможет.

Ответы [ 3 ]

0 голосов
/ 11 марта 2011

Используйте событие STATE_CHANGE компонента FLVPlayback и проверьте состояние, если это CONNECTION_ERROR. Вы также можете проверить, началось ли воспроизведение вашего видео, завершилось ли оно и т. Д.

Приведенный ниже код является примером, который вы можете использовать в качестве documentclass для fla as3:

package
{
    import flash.display.Sprite;
    import fl.video.FLVPlayback;
    import fl.video.VideoEvent;
    import fl.video.VideoState;
    public class Player extends Sprite
    {
        public var playback:FLVPlayback;

        public function Player()
        {
            playback.addEventListener(VideoEvent.STATE_CHANGE, onStateChange);
        }

        private function onStateChange(ev:VideoEvent):void
        {
            if (ev.state == VideoState.CONNECTION_ERROR)
            {
                trace("could not load video");
            }
        }
    }
}

ОБНОВЛЕНИЕ: чтобы ваш выше обновленный код работал, измените событие NetStatus на событие STATE_CHANGE:

thestream.addEventListener(VideoEvent.STATE_CHANGE, onNCStatus);
   function onNCStatus(event:VideoEvent):void {
       trace(event.info.code)
       switch (event.state) {
           case VideoState.CONNECTION_ERROR:
               trace("Stream not found/Could not connect to stream");
               break;
       }   
   }

Компонент FLVPlayBack НЕ отправляет событие NetStatus.

0 голосов
/ 11 марта 2011

flvPlaybackComponent.addEventListener (* NetStatusEvent.NET_STATUS *, onNCStatus);

Трудно сказать, не видя ваш код.Для начала рекомендуется убедиться, что в вашем коде никогда нет строк функциональности, поэтому следует заменить строку «netStatus» на NetStatusEvent.NET_STATUS, которая является статической константной переменной.

0 голосов
/ 11 марта 2011

Поместите слушатель в экземпляр вашего компонента:

flvPlaybackComponent.addEventListener("netStatus", onNCStatus);

function onNCStatus(event:NetStatusEvent):void {
 trace(event.info.code)
 switch (event.info.code) {
  case "NetConnection.Connect.Success":
      trace("Success");
      break;
  case "NetStream.Play.StreamNotFound":
     trace("Stream not found");
     break;
 }   
}

Тогда просто поместите свой визуал где-нибудь на сцене и делайте с ним все, что вам нужно, в области потока, не найденной функции слушателя.

...