闪存媒体服务器 2126 必须连接 NetConnection 对象



我在闪存CS6上使用闪存媒体服务器5尝试播放视频,但它永远不会起作用。它总是说:

{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");

怎么了?

问题是NetConnectionconnect方法是异步的。 这意味着应用程序不会冻结整个程序等待响应(有时可能需要一段时间(,而是立即移动到代码的其余部分,并在连接完成后调度事件。

您需要做的是将事件侦听器添加到您的网络连接中,以便您的程序知道该连接何时完成。然后,只有在您知道连接已建立之后,才运行您的网络流代码。

下面是一个示例:

//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信息代码的列表。 处理所有各种连接错误也是一个好主意。

最新更新