flash.net
public class NetConnection
继承NetConnection Inheritance EventDispatcher Inheritance Object

语言版本 : ActionScript 3.0
Player 版本 : Flash Player 9

使用 NetConnection 类可以调用远程应用程序服务器(Adobe 的 Flash Media Server 2 或 Adobe Flex)上的命令,并可从 HTTP 地址或本地驱动器播放 Flash 视频 (FLV) 文件流。 通常,将 NetConnection 对象和 NetStream 对象一起使用。

使用此类时,请考虑 Flash Player 安全模型:

有关详细信息,请参阅以下部分:

NetStream 类中的一些属性和方法主要用于服务器(例如:Flash Media Server 或 Flex)。 它们可能包含更多的服务器端功能。 有关其它文档,请参阅 Flash Media Server documentation中的 NetStream 类。

注意:该类在 ActionScript 2.0 中是动态的,但现已将该类密封。 若要为该类编写回调方法,可以扩展该类,然后在子类中定义回调方法,也可以使用 client 属性引用一个对象,然后对该对象定义回调方法。

查看示例

另请参见

client
NetStream



公共 属性
 属性定义方
  client : Object
指示应对其调用回调方法的对象。
NetConnection
  connected : Boolean
[read-only] 指示 Flash Player 是通过持久性的 RTMP 连接连接到服务器 (true) 还是没有连接 (false)。
NetConnection
  connectedProxyType : String
[read-only] 如果连接成功,则指示使用的是哪种连接方法:直接连接、CONNECT 方法还是 HTTP 隧道。
NetConnection
 Inheritedconstructor : Object
对类对象或给定对象实例的构造函数的引用。
Object
  defaultObjectEncoding : uint
[static] 在 SWF 文件中创建的 NetConnection 对象的默认对象编码(AMF 版本)。
NetConnection
  objectEncoding : uint
此 NetConnection 实例的对象编码(AMF 版本)。
NetConnection
 Inheritedprototype : Object
[static] 对类或函数对象的原型对象的引用。
Object
  proxyType : String
确定是否将本机 SSL 用于 RTMPS 而不是用于 HTTPS,以及是否使用建立隧道的 CONNECT 方法通过代理服务器进行连接。
NetConnection
  uri : String
[read-only] 若使用 connect 连接到服务器,则为传递给 NetConnection.connect() 的应用程序服务器的 URI。
NetConnection
  usingTLS : Boolean
[read-only] 指示是否已使用本机传输层安全 (TLS) 而不是 HTTPS 建立了一个安全连接。
NetConnection
公共 方法
 方法定义方
  
创建一个 NetConnection 对象,可与 NetStream 对象一起用于调用远程应用程序服务器上的命令,或者在本地或从服务器播放视频流 (FLV) 文件。
NetConnection
 Inherited
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
使用 EventDispatcher 对象注册事件侦听器对象,以使侦听器能够接收事件通知。
EventDispatcher
  
addHeader(operation:String, mustUnderstand:Boolean = false, param:Object = null):void
将上下文标头添加到 AMF 数据包结构。
NetConnection
  
call(command:String, responder:Responder, ... arguments):void
在运行 Flash Media Server 的服务器上或应用程序实例所连接的应用程序服务器上调用命令或方法。
NetConnection
  
关闭本地打开的连接或与服务器的连接,并调度 code 属性值为 NetConnection.Connect.Closed 的 netStatus 事件。
NetConnection
  
connect(command:String, ... arguments):void
打开到服务器的连接。
NetConnection
 Inherited
将事件调度到事件流中。
EventDispatcher
 Inherited
检查 EventDispatcher 对象是否为特定事件类型注册了任何侦听器。
EventDispatcher
 Inherited
指示对象是否已经定义了指定的属性。
Object
 Inherited
指示 Object 类的实例是否在指定为参数的对象的原型链中。
Object
 Inherited
指示指定的属性是否存在、是否可枚举。
Object
 Inherited
removeEventListener(type:String, listener:Function, useCapture:Boolean = false):void
从 EventDispatcher 对象中删除侦听器。
EventDispatcher
 Inherited
设置循环操作动态属性的可用性。
Object
 Inherited
返回指定对象的字符串表示形式。
Object
 Inherited
返回指定对象的原始值。
Object
 Inherited
检查是否用此 EventDispatcher 对象或其任何始祖为指定事件类型注册了事件侦听器。
EventDispatcher
事件
 事件摘要定义方
 Inherited Flash Player 获得操作系统焦点并变为活动状态时调度。EventDispatcher
   在异步引发异常(即来自本机异步代码)时调度。NetConnection
 Inherited Flash Player 失去操作系统焦点并变为非活动状态时调度。EventDispatcher
   在出现输入或输出错误并导致网络操作失败时调度。NetConnection
   在 NetConnection 对象报告其状态或错误条件时调度。NetConnection
   若对 NetConnection.call() 的调用尝试连接到调用方安全沙箱外部的服务器,则进行调度。NetConnection
属性详细信息
client属性
client:Object  [read-write]

语言版本 : ActionScript 3.0
Player 版本 : Flash Player 9

指示应对其调用回调方法的对象。 默认值为此 NetConnection 实例。 如果将 client 属性设置为另一个对象,则将对该对象调用回调方法。


实现
    public function get client():Object
    public function set client(value:Object):void

引发
TypeError — 必须将 client 属性设置为非空对象。
connected属性 
connected:Boolean  [read-only]

语言版本 : ActionScript 3.0
Player 版本 : Flash Player 9

指示 Flash Player 是通过持久性的 RTMP 连接连接到服务器 (true) 还是没有连接 (false)。 通过 HTTP 进行连接时,此属性始终为 false。 对于连接到应用程序服务器的 AMF 连接而言,此属性始终为 true


实现
    public function get connected():Boolean
connectedProxyType属性 
connectedProxyType:String  [read-only]

语言版本 : ActionScript 3.0
Player 版本 : Flash Player 9

如果连接成功,则指示使用的是哪种连接方法:直接连接、CONNECT 方法还是 HTTP 隧道。 可能的值包括“none”、“HTTP”、“HTTPS”和“CONNECT”。 此属性仅在连接了 NetConnection 对象时有效。 此属性用于 Flex 应用程序和 Flash Media Server 应用程序。 在 Flash Player 9 中,仅当使用 RTMP、RTMPS 或 RTMPT 时,此属性才可用。 CONNECT 方法仅适用于通过代理服务器连接到网络的用户。

可以读取此属性以确定使用的是哪种连接方法。 如果使用的是直接连接方法,则此属性返回“none”;如果使用的是 HTTP 隧道方法,则此属性返回“HTTP”;如果使用的是安全 HTTPS 隧道方法,则此属性返回“HTTPS”;如果使用的是代理 CONNECT 方法,则此属性返回“CONNECT”。


实现
    public function get connectedProxyType():String

引发
ArgumentError — 已尝试在未连接 NetConnection 实例时访问此属性。
defaultObjectEncoding属性 
defaultObjectEncoding:uint  [read-write]

语言版本 : ActionScript 3.0
Player 版本 : Flash Player 9

在 SWF 文件中创建的 NetConnection 对象的默认对象编码(AMF 版本)。 当将对象写为二进制数据或从二进制数据读取对象时,defaultObjectEncoding 属性将指示应使用哪一个版本的 Action Message Format:ActionScript 3.0 格式还是 ActionScript 1.0 或 ActionScript 2.0 格式。

默认情况下,将 NetConnection.defaultObjectEncoding 设为使用 ActionScript 3.0 格式 (AMF3)。 更改 NetConnection.defaultObjectEncoding 不会影响现有 NetConnection 实例,只会影响随后创建的实例。

若要单独设置某个对象的编码(而非设置整个 SWF 文件的对象编码),请改为设置 NetConnection 对象的 objectEncoding 属性。

有关详细信息,请参阅关于 objectEncoding 属性的描述。


实现
    public static function get defaultObjectEncoding():uint
    public function set defaultObjectEncoding(value:uint):void

另请参见

objectEncoding属性 
objectEncoding:uint  [read-write]

语言版本 : ActionScript 3.0
Player 版本 : Flash Player 9

此 NetConnection 实例的对象编码(AMF 版本)。 此属性的默认值为 defaultObjectEncoding 的值。 可接受的值为 ObjectEncoding.AMF3ObjectEncoding.AMF0

如果 ActionScript 3.0 SWF 文件需要与在 Flash Player 9 之前发布的服务器进行通信,则了解此属性非常重要。

当将对象写为二进制数据或从二进制数据读取对象时,objectEncoding 属性将指示应使用哪一个版本的 Action Message Format:ActionScript 3.0 格式 (ObjectEncoding.AMF3) 还是 ActionScript 1.0 或 ActionScript 2.0 格式 (ObjectEncoding.AMF0)。 当使用 NetConnection 对象连接到服务器时,有以下三种方案可用:

更改 defaultObjectEncoding 不会影响现有 NetConnection 实例,只会影响随后创建的实例。

一旦连接到 NetConnection 实例,其 objectEncoding 属性将变为只读。

如果连接服务器时使用了错误的编码,则 Flash Player 将调度 netStatus 事件。 NetStatusEvent.info 属性包含一个信息对象,此信息对象具有值为 NetConnection.Connect.Failedcode 属性,并包含说明对象编码不正确的描述。


实现
    public function get objectEncoding():uint
    public function set objectEncoding(value:uint):void

引发
ReferenceError — 连接 NetConnection 实例时,会尝试设置 objectEncoding 属性值。
 
ArgumentError — 此属性被设置为 ObjectEncoding.AMF0ObjectEncoding.AMF3 以外的值。

另请参见

proxyType属性 
proxyType:String  [read-write]

语言版本 : ActionScript 3.0
Player 版本 : Flash Player 9

确定是否将本机 SSL 用于 RTMPS 而不是用于 HTTPS,以及是否使用建立隧道的 CONNECT 方法通过代理服务器进行连接。 可接受的值为“none”、“HTTP”、“CONNECT”、和“best”。 此属性用于 Flex 应用程序和 Flash Media Server 2 应用程序。

在 Flash Player 9 中,仅当使用 RTMP、RTMPS 或 RTMPT 时,此属性才可用。 CONNECT 方法仅适用于通过代理服务器连接到网络的用户。

proxyType 属性可确定初始连接尝试失败后应使用的后备方法。 必须在调用 NetConnection.connect() 方法之前设置 proxyType 属性。 此属性可确定是否尝试使用本机传输层安全 (TLS),以及在应用程序尝试连接时如果遇到代理服务器应如何与之协同工作。

在 Flash Player 9 中,此属性的默认值为“none”;如果未更改此值,Flash Player 将针对 RTMPS 使用 HTTPS 隧道。 如果将此属性设置为“best”,则将建立最佳连接方法并首先尝试最佳方法,如果失败则使用其它备用方法。 对于 RTMPS 连接,默认情况下使用本机 SSL 套接字,如有必要则使用其它备用方法。 如果将此属性设为“HTTP”并且直接连接失败,则将使用 HTTP 隧道的旧方法。 如果将此属性设为“CONNECT”并且直接连接失败,则将使用隧道的 CONNECT 方法。 如果后者也失败,连接不会使用备用的 HTTP 隧道方法。


实现
    public function get proxyType():String
    public function set proxyType(value:String):void
uri属性 
uri:String  [read-only]

语言版本 : ActionScript 3.0
Player 版本 : Flash Player 9

若使用 connect 连接到服务器,则为传递给 NetConnection.connect() 的应用程序服务器的 URI。 如果尚未调用 NetConnection.connect() 或者未传递 URI,则此属性为 undefined


实现
    public function get uri():String
usingTLS属性 
usingTLS:Boolean  [read-only]

语言版本 : ActionScript 3.0
Player 版本 : Flash Player 9

指示是否已使用本机传输层安全 (TLS) 而不是 HTTPS 建立了一个安全连接。 此属性仅在连接了 NetConnection 对象时有效。


实现
    public function get usingTLS():Boolean

引发
ArgumentError — 已尝试在未连接 NetConnection 实例时访问此属性。
构造函数详细信息
NetConnection()构造函数
public function NetConnection()

语言版本 : ActionScript 3.0
Player 版本 : Flash Player 9

创建一个 NetConnection 对象,可与 NetStream 对象一起用于调用远程应用程序服务器上的命令,或者在本地回放视频流 (FLV) 文件。 在创建 NetConnection 对象后,使用 connect() 进行实际连接。

与在 Flash 文档中嵌入视频相比,播放外部 FLV 文件有多个好处,例如更好的性能和内存管理以及独立的视频和 Flash 帧频。

如果 ActionScript 3.0 SWF 文件需要与在 Flash Player 9 之前发布的服务器进行通信,可能需要调整 NetConnection 对象的 objectEncoding 属性。

另请参见

方法详细信息
addHeader()方法
public function addHeader(operation:String, mustUnderstand:Boolean = false, param:Object = null):void

语言版本 : ActionScript 3.0
Player 版本 : Flash Player 9

将上下文标头添加到 AMF 数据包结构。 此标头将随以后的每个 AMF 数据包一起发送。 如果使用相同的名称调用 NetConnection.addHeader(),则新标头将代替现有标头,并在 NetConnection 对象的持续时间内始终使用新标头。 通过调用具有标头名称的 NetConnection.addHeader() 可以删除标头,进而删除未定义对象。 该方法与诸如 Flex 或 Flash Media Server 之类的服务器的使用相关。

参数

operation:String — 标识标头和与之相关的 ActionScript 对象数据。
 
mustUnderstand:Boolean (default = false) — 值为 true 表示服务器必须先了解和处理此标头再处理任一后续标头或消息。
 
param:Object (default = null) — 任一 ActionScript 对象。

call()方法 
public function call(command:String, responder:Responder, ... arguments):void

语言版本 : ActionScript 3.0
Player 版本 : Flash Player 9

在运行 Flash Media Server 的服务器上或应用程序实例所连接的应用程序服务器上调用命令或方法。 必须创建要传递给此方法的服务器端函数。

参数

command:String — 以 [objectPath/]method 的形式指定的方法。 例如,someObject/doSomething 命令将通知远程服务器调用 clientObject.someObject.doSomething() 方法,并带有所有可选的 ... arguments 参数。 如果缺少对象路径,则将在远程服务器上调用 clientObject.doSomething()
 
responder:Responder — 可选对象,用于处理服务器的返回值。 Responder 对象可以用两个定义的方法来处理返回的结果:resultstatus。 如果返回的结果为错误,则将调用 status;否则,将调用 result。 Responder 对象可以处理与特定操作有关的错误,而 NetConnection 对象则响应与连接状态有关的错误。
 
... arguments — 可选参数,可以为任一 ActionScript 类型,并包括对另一个 ActionScript 对象的引用。 当在远程应用程序服务器上执行 command 参数中指定的方法时,这些参数将被传递给该方法。


事件
securityError:SecurityErrorEvent — 尝试与位于调用方安全沙箱外部的服务器进行通信的调用。 可通过在服务器上使用策略文件来避免出现此问题。
close()方法 
public function close():void

语言版本 : ActionScript 3.0
Player 版本 : Flash Player 9

关闭本地打开的或与服务器一起打开的连接,并调度带有值为 NetConnection.Connect.Closedcode 属性的 netStatus 事件。

此方法将断开通过所有 NetStream 对象运行所依赖的连接;队列中尚未发送的数据将被丢弃。 (若要终止流而不关闭连接,请使用 NetStream.close()。) 如果调用此方法然后希望重新连接,则必须创建 NetStream 对象。

另请参见

connect()方法 
public function connect(command:String, ... arguments):void

语言版本 : ActionScript 3.0
Player 版本 : Flash Player 9

打开到服务器的连接。 通过该连接,可以从本地文件系统回放音频或视频 (FLV) 文件,也可以在远程服务器上调用命令。

使用此方法时,请考虑 Flash Player 安全模型和下列安全注意事项:

有关详细信息,请参阅以下部分:

参数

command:String — 如果要连接的视频不在服务器上(即视频在运行 SWF 文件的本地计算机上),则将此参数设置为 null

如果要连接到服务器,则将此参数设置为进行连接时运行的服务器上的应用程序的 URI。 使用以下格式(方括号中的项为可选项):

protocol:[//host][:port]/appname/[instanceName]

如果 SWF 文件由安装服务器的同一台主机提供,则可以省略 host 参数。 如果省略 instanceName 参数,则 Flash Player 连接到应用程序的默认实例 (_definst_)。

 
... arguments — 要传递给 command 中指定的应用程序的任一类型可选参数。 如果应用程序无法按照参数的接收顺序来处理参数,则将调度 netStatusEvent,并将 code 属性设置为 NetConnection.Connect.Rejected


引发
ArgumentError — 传递给 command 参数的 URI 格式不正确。
 
IOError — 连接失败。 这可能是由于从 netStatus 事件处理程序中调用了 connect(),而这是不允许的。
 
SecurityError — 本地不受信任的 SWF 文件无法与 Internet 通信。 可通过将此 SWF 文件重新分类为只能与远程内容交互或受信任来避免出现这种问题。

另请参见

事件详细信息
asyncError 事件
事件对象类型: flash.events.AsyncErrorEvent
AsyncErrorEvent.type property = flash.events.AsyncErrorEvent.ASYNC_ERROR

语言版本 : ActionScript 3.0
Player 版本 : Flash Player 9

在异步引发异常(即来自本机异步代码)时调度。

AsyncErrorEvent.ASYNC_ERROR 常数定义 asyncError 事件对象的 type 属性值。

此事件具有以下属性:

属性
bubblesfalse
cancelablefalse;没有要取消的默认行为。
currentTarget当前正在使用某个事件侦听器处理 Event 对象的对象。
target发生网络操作失败的对象。
error触发此事件的错误。
ioError 事件  
事件对象类型: flash.events.IOErrorEvent
IOErrorEvent.type property = flash.events.IOErrorEvent.IO_ERROR

语言版本 : ActionScript 3.0
Player 版本 : Flash Player 9

在出现输入或输出错误并导致网络操作失败时调度。

定义 ioError 事件对象的 type 属性值。

此事件具有以下属性:

属性
bubblesfalse
cancelablefalse;没有要取消的默认行为。
currentTarget当前正在使用某个事件侦听器处理 Event 对象的对象。
target发生输入/输出错误的网络对象。
text要显示为错误消息的文本。
netStatus 事件  
事件对象类型: flash.events.NetStatusEvent
NetStatusEvent.type property = flash.events.NetStatusEvent.NET_STATUS

语言版本 : ActionScript 3.0
Player 版本 : Flash Player 9

在 NetConnection 对象报告其状态或错误条件时调度。 netStatus 事件包含一个 info 属性,该属性是一个包含事件特定信息(例如,连接尝试成功还是失败)的信息对象。

定义 netStatus 事件对象的 type 属性值。

此事件具有以下属性:

属性
bubblesfalse
cancelablefalse;没有要取消的默认行为。
currentTarget当前正在使用某个事件侦听器处理 Event 对象的对象。
info一个对象,具有描述对象的状态或错误情况的属性。
target报告其状态的 NetConnection 或 NetStream 对象。

另请参见

securityError 事件  
事件对象类型: flash.events.SecurityErrorEvent
SecurityErrorEvent.type property = flash.events.SecurityErrorEvent.SECURITY_ERROR

语言版本 : ActionScript 3.0
Player 版本 : Flash Player 9

若对 NetConnection.call() 的调用尝试连接到调用方安全沙箱外部的服务器,则进行调度。

SecurityErrorEvent.SECURITY_ERROR 常量定义 securityError 事件对象的 type 属性值。

此事件具有以下属性:

属性
bubblesfalse
cancelablefalse;没有要取消的默认行为。
currentTarget当前正在使用某个事件侦听器处理 Event 对象的对象。
target报告安全错误的网络对象。
text要显示为错误消息的文本。

另请参见

示例 如何使用示例

以下示例将 Video 对象与 NetConnection 和 NetStream 类一同使用,以加载和播放 FLV 文件。 若要运行此示例,需要一个 FLV 文件,其名称和位置与传递给 videoURL 的变量匹配,在本例中,名为 Video.flv 的 FLV 文件与 SWF 文件在同一个目录中。

在本例中,创建 Video 和 NetStream 对象并调用 Video.attachNetStream()NetStream.play() 方法的代码放在处理函数中。 仅当连接到 NetConnection 对象的尝试取得成功时才调用处理函数,即,当 netStatus 事件返回 info 对象(带有一个表示成功的 code 属性)时,才调用该处理函数。 建议您在调用 NetStream.play() 之前,等待连接成功。


package {
    import flash.display.Sprite;
    import flash.events.NetStatusEvent;
    import flash.events.SecurityErrorEvent;
    import flash.media.Video;
    import flash.net.NetConnection;
    import flash.net.NetStream;
    import flash.events.Event;

    public class NetConnectionExample extends Sprite {
        private var videoURL:String = "Video.flv";
        private var connection:NetConnection;
        private var stream:NetStream;

        public function NetConnectionExample() {
            connection = new NetConnection();
            connection.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
            connection.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
            connection.connect(null);
        }

        private function netStatusHandler(event:NetStatusEvent):void {
            switch (event.info.code) {
                case "NetConnection.Connect.Success":
                    connectStream();
                    break;
                case "NetStream.Play.StreamNotFound":
                    trace("Stream not found: " + videoURL);
                    break;
            }
        }

        private function securityErrorHandler(event:SecurityErrorEvent):void {
            trace("securityErrorHandler: " + event);
        }

        private function connectStream():void {
            var stream:NetStream = new NetStream(connection);
            stream.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
            stream.client = new CustomClient();
            var video:Video = new Video();
            video.attachNetStream(stream);
            stream.play(videoURL);
            addChild(video);
        }
    }
}

class CustomClient {
    public function onMetaData(info:Object):void {
        trace("metadata: duration=" + info.duration + " width=" + info.width + " height=" + info.height + " framerate=" + info.framerate);
    }
    public function onCuePoint(info:Object):void {
        trace("cuepoint: time=" + info.time + " name=" + info.name + " type=" + info.type);
    }
}




 

评论添加到页面后给我发送电子邮件 | 评论报告

当前页: http://livedocs.adobe.com/flash/9.0_cn/ActionScriptLangRefV3/flash/net/NetConnection.html