我已经使用组件库成功创建了一个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 :(得分: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;
}
}
然后让你的视觉在舞台上的某个地方,并在侦听器功能的流未找到区域内用它做你需要的东西。
答案 1 :(得分: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事件。
答案 2 :(得分:0)
flvPlaybackComponent.addEventListener(* NetStatusEvent.NET_STATUS *,onNCStatus);
如果没有看到您的代码,很难说清楚。首先,确保代码中没有字符串用于实现功能是一种好习惯,因此您应该将字符串“netStatus”替换为静态常量变量NetStatusEvent.NET_STATUS。