2011-03-10 41 views
0

我已经使用组件库成功创建了FLVPlayback组件,并且正在播放我想要的流视频。我的问题是,如果该流不在线或无法找到,我将如何在舞台上显示消息以让用户知道,没有活动流。如果没有找到AS3 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

希望这有助于。

回答

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

这时正好有在舞台上你的视觉地方,并做你需要用它来流中的监听功能,没有发现区域。

+0

我遇到麻烦让函数工作。我用FLVPlayback实例名称'thestream'取代了'flvPlaybackComponent',但是当我尝试导出时,我没有在Output标签中找到任何东西。 – NaN 2011-03-10 23:56:53

+0

我编辑了上面的代码来找出每个状态代码。如果实例名称正确,这至少会跟踪一些内容。给它一个镜头,让我知道。 – jpea 2011-03-11 14:31:15

+0

我用更多的代码更新了我的帖子。仍然有麻烦。 – NaN 2011-03-11 18:04:00

0

使用FLVPlayback组件的STATE_CHANGE事件,并检查它是否为CONNECTION_ERROR的状态。 如果您的视频已经开始播放,如果播放完毕等,您也可以在那里查看。

下面的代码是一个示例,你可以作为的DocumentClass使用的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"); 
      } 
     } 
    } 
} 

UPDATE:为了让您的上述更新的代码工作,改变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

Malyngo,我试过了你的代码,但是我在第2行出现错误'Scene 1,Layer'actions',Frame 1,Line 2 \t 1037:包不能嵌套。 ' – NaN 2011-03-11 18:32:59

+0

您正在将上面的代码放入框架脚本中,这就是为什么它不起作用。只需使用行** playback.addEventListener(VideoEvent.STATE_CHANGE,onStateChange); **和函数** onStateChange **的代码(如果要将其用作framescript)。你可能不得不在函数中省略private,所以它只是像**函数onStateChange(ev:VideoEvent):void {...} ** – Malyngo 2011-03-14 09:54:15

+0

Intersting。我会试一试。 – NaN 2011-03-16 18:59:10

0

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

很难说没有看到您的代码。首先,确保代码中没有字符串用于实现功能,这是一个很好的做法,因此您应该使用静态常量变量NetStatusEvent.NET_STATUS替换字符串“netStatus”。

+0

我已经用更多的代码更新了我的帖子。仍然有麻烦。 – NaN 2011-03-11 18:02:49

相关问题