0

我已经使用组件库成功创建了一个 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

希望这可以帮助。

4

3 回答 3

0

在您的组件实例上放置一个侦听器:

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;
 }   
}

然后将您的视觉效果放在舞台上的某个地方,并在侦听器功能的未找到流区域内使用它做您需要的事情。

于 2011-03-10T21:20:54.370 回答
0

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

Difficult to tell without seeing your code. As a start, it's good practice to ensure there are never strings in your code for functionality, so you should replace the string "netStatus" with NetStatusEvent.NET_STATUS which is a static constant variable.

于 2011-03-11T09:55:17.933 回答
0

使用 FLVPlayback 组件的 STATE_CHANGE 事件,检查状态是否为 CONNECTION_ERROR。您还可以在那里查看您的视频是否已开始播放、是否已完成播放等。

下面的代码是一个示例,您可以将其用作 as3 fla 的文档类:

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 事件。

于 2011-03-11T09:49:27.737 回答