我在闪存CS6上使用闪存媒体server5尝试播放视频,但它从来没有工作过。它总是说:
{ArgumentError: Error #2126: NetConnection object must be connected
at flash.net::NetStream/ctor()
at flash.net::NetStream()
at flashmediaservertest_fla::MainTimeline/frame1()}我的代码:
var my_nc:NetConnection =new NetConnection();
my_nc.connect("rtmp://127.0.0.1/flv/");
my_nc.client = this;
var my_ns= new NetStream(my_nc);
video.attachNetStream(my_ns);
my_ns.play("simple.flv");有什么问题吗?
发布于 2017-05-19 07:47:53
问题是NetConnection的connect方法是异步的。这意味着,应用程序不会冻结整个程序等待响应(有时可能需要一段时间),而是立即转到代码的其余部分,并在连接完成时调度一个事件。
您需要做的是向您的网络连接添加一个事件侦听器,以便您的程序知道该连接何时完成。然后,只有在您知道连接已建立之后,才能运行您的net stream代码。
下面是一个示例:
//instantiate your net connection (no change here)
var my_nc:NetConnection = new NetConnection();
//listen for the NET_STATUS event which you tell you when you have successfully connected or if your connection is lost etc.
my_nc.addEventListener(NetStatusEvent.NET_STATUS, statusHandler);
my_nc.client = this;
my_nc.connect("rtmp://127.0.0.1/flv/");
function statusHandler(e:NetStatusEvent):void {
switch (e.info.code) {
case "NetConnection.Connect.Success":
startStream();
break;
case "NetConnection.Connect.Closed":
//your connection was closed
break;
}
}
function startStream():void {
var my_ns= new NetStream(my_nc);
video.attachNetStream(my_ns);
my_ns.play("simple.flv");
}您可以看到所有不同的NET_STATUS信息代码here的列表。处理所有不同的连接错误也是一个好主意。
https://stackoverflow.com/questions/44058161
复制相似问题