包 | flash.net |
类 | public class NetConnection |
继承 | NetConnection EventDispatcher Object |
语言版本 : | ActionScript 3.0 |
Player 版本 : | Flash Player 9 |
使用此类时,请考虑 Flash Player 安全模型:
有关详细信息,请参阅以下部分:
NetStream 类中的一些属性和方法主要用于服务器(例如:Flash Media Server 或 Flex)。 它们可能包含更多的服务器端功能。 有关其它文档,请参阅 Flash Media Server documentation中的 NetStream 类。
注意:该类在 ActionScript 2.0 中是动态的,但现已将该类密封。 若要为该类编写回调方法,可以扩展该类,然后在子类中定义回调方法,也可以使用 client
属性引用一个对象,然后对该对象定义回调方法。
另请参见
属性 | 定义方 | ||
---|---|---|---|
client : Object
指示应对其调用回调方法的对象。
| NetConnection | ||
connected : Boolean
[read-only]
指示 Flash Player 是通过持久性的 RTMP 连接连接到服务器 (true) 还是没有连接 (false)。
| NetConnection | ||
connectedProxyType : String
[read-only]
如果连接成功,则指示使用的是哪种连接方法:直接连接、CONNECT 方法还是 HTTP 隧道。
| NetConnection | ||
constructor : Object
对类对象或给定对象实例的构造函数的引用。
| Object | ||
defaultObjectEncoding : uint
[static]
在 SWF 文件中创建的 NetConnection 对象的默认对象编码(AMF 版本)。
| NetConnection | ||
objectEncoding : uint
此 NetConnection 实例的对象编码(AMF 版本)。
| NetConnection | ||
prototype : 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 | ||
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
使用 EventDispatcher 对象注册事件侦听器对象,以使侦听器能够接收事件通知。
| EventDispatcher | ||
将上下文标头添加到 AMF 数据包结构。
| NetConnection | ||
在运行 Flash Media Server 的服务器上或应用程序实例所连接的应用程序服务器上调用命令或方法。
| NetConnection | ||
关闭本地打开的连接或与服务器的连接,并调度 code 属性值为 NetConnection.Connect.Closed 的 netStatus 事件。
| NetConnection | ||
打开到服务器的连接。
| NetConnection | ||
将事件调度到事件流中。
| EventDispatcher | ||
检查 EventDispatcher 对象是否为特定事件类型注册了任何侦听器。
| EventDispatcher | ||
指示对象是否已经定义了指定的属性。
| Object | ||
指示 Object 类的实例是否在指定为参数的对象的原型链中。
| Object | ||
指示指定的属性是否存在、是否可枚举。
| Object | ||
从 EventDispatcher 对象中删除侦听器。
| EventDispatcher | ||
设置循环操作动态属性的可用性。
| Object | ||
返回指定对象的字符串表示形式。
| Object | ||
返回指定对象的原始值。
| Object | ||
检查是否用此 EventDispatcher 对象或其任何始祖为指定事件类型注册了事件侦听器。
| EventDispatcher |
事件 | 摘要 | 定义方 | ||
---|---|---|---|---|
Flash Player 获得操作系统焦点并变为活动状态时调度。 | EventDispatcher | |||
在异步引发异常(即来自本机异步代码)时调度。 | NetConnection | |||
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.AMF3
和 ObjectEncoding.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
的默认值是 ObjectEncoding.AMF3
。 在此 SWF 文件中创建的所有 NetConnection 实例均使用 AMF3 序列化,因此不必设置 Flash Player 应使用哪种 AMF 编码。defaultObjectEncoding
属性设置为 ObjectEncoding.AMF0
。 在此 SWF 文件中创建的所有 NetConnection 实例均使用 AMF0 序列化。 因此不必设置 objectEncoding
属性。 defaultObjectEncoding
,而是使用每个连接的 objectEncoding
属性设置每个连接的对象编码。 若要连接到使用 AMF0 编码的服务器,例如 Flex 1.5 和 Flash Media Server 2,则将此属性设置为 ObjectEncoding.AMF0
;若要连接到使用 AMF3 编码的服务器,例如 Flex 2,则将此属性设置为 ObjectEncoding.AMF3
。更改 defaultObjectEncoding
不会影响现有 NetConnection 实例,只会影响随后创建的实例。
一旦连接到 NetConnection 实例,其 objectEncoding
属性将变为只读。
如果连接服务器时使用了错误的编码,则 Flash Player 将调度 netStatus
事件。 NetStatusEvent.info
属性包含一个信息对象,此信息对象具有值为 NetConnection.Connect.Failed
的 code
属性,并包含说明对象编码不正确的描述。
public function get objectEncoding():uint
public function set objectEncoding(value:uint):void
ReferenceError — 连接 NetConnection 实例时,会尝试设置 objectEncoding 属性值。
|
|
ArgumentError — 此属性被设置为 ObjectEncoding.AMF0 或 ObjectEncoding.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 对象可以用两个定义的方法来处理返回的结果:result 和 status 。 如果返回的结果为错误,则将调用 status ;否则,将调用 result 。 Responder 对象可以处理与特定操作有关的错误,而 NetConnection 对象则响应与连接状态有关的错误。
|
|
... arguments — 可选参数,可以为任一 ActionScript 类型,并包括对另一个 ActionScript 对象的引用。 当在远程应用程序服务器上执行 command 参数中指定的方法时,这些参数将被传递给该方法。
|
securityError: — 尝试与位于调用方安全沙箱外部的服务器进行通信的调用。 可通过在服务器上使用策略文件来避免出现此问题。 |
close | () | 方法 |
public function close():void
语言版本 : | ActionScript 3.0 |
Player 版本 : | Flash Player 9 |
关闭本地打开的或与服务器一起打开的连接,并调度带有值为 NetConnection.Connect.Closed
的 code
属性的 netStatus
事件。
此方法将断开通过所有 NetStream 对象运行所依赖的连接;队列中尚未发送的数据将被丢弃。 (若要终止流而不关闭连接,请使用 NetStream.close()
。) 如果调用此方法然后希望重新连接,则必须创建 NetStream 对象。
另请参见
connect | () | 方法 |
public function connect(command:String, ... arguments):void
语言版本 : | ActionScript 3.0 |
Player 版本 : | Flash Player 9 |
打开到服务器的连接。 通过该连接,可以从本地文件系统回放音频或视频 (FLV) 文件,也可以在远程服务器上调用命令。
使用此方法时,请考虑 Flash Player 安全模型和下列安全注意事项:
NetConnection.connect()
方法。object
和 embed
标签的 allowNetworking
参数,防止 SWF 文件使用此方法。有关详细信息,请参阅以下部分:
参数
command:String — 如果要连接的视频不在服务器上(即视频在运行 SWF 文件的本地计算机上),则将此参数设置为 null 。
如果要连接到服务器,则将此参数设置为进行连接时运行的服务器上的应用程序的 URI。 使用以下格式(方括号中的项为可选项):
如果 SWF 文件由安装服务器的同一台主机提供,则可以省略 |
|
... arguments — 要传递给 command 中指定的应用程序的任一类型可选参数。 如果应用程序无法按照参数的接收顺序来处理参数,则将调度 netStatusEvent ,并将 code 属性设置为 NetConnection.Connect.Rejected 。
|
ArgumentError — 传递给 command 参数的 URI 格式不正确。
|
|
IOError — 连接失败。 这可能是由于从 netStatus 事件处理程序中调用了 connect() ,而这是不允许的。
|
|
SecurityError — 本地不受信任的 SWF 文件无法与 Internet 通信。 可通过将此 SWF 文件重新分类为只能与远程内容交互或受信任来避免出现这种问题。
|
另请参见
asyncError | 事件 |
flash.events.AsyncErrorEvent
flash.events.AsyncErrorEvent.ASYNC_ERROR
语言版本 : | ActionScript 3.0 |
Player 版本 : | Flash Player 9 |
在异步引发异常(即来自本机异步代码)时调度。
AsyncErrorEvent.ASYNC_ERROR
常数定义 asyncError
事件对象的 type
属性值。
此事件具有以下属性:
属性 | 值 |
---|---|
bubbles | false |
cancelable | false ;没有要取消的默认行为。 |
currentTarget | 当前正在使用某个事件侦听器处理 Event 对象的对象。 |
target | 发生网络操作失败的对象。 |
error | 触发此事件的错误。 |
ioError | 事件 |
flash.events.IOErrorEvent
flash.events.IOErrorEvent.IO_ERROR
语言版本 : | ActionScript 3.0 |
Player 版本 : | Flash Player 9 |
在出现输入或输出错误并导致网络操作失败时调度。
定义ioError
事件对象的 type
属性值。
此事件具有以下属性:
属性 | 值 |
---|---|
bubbles | false |
cancelable | false ;没有要取消的默认行为。 |
currentTarget | 当前正在使用某个事件侦听器处理 Event 对象的对象。 |
target | 发生输入/输出错误的网络对象。 |
text | 要显示为错误消息的文本。 |
netStatus | 事件 |
flash.events.NetStatusEvent
flash.events.NetStatusEvent.NET_STATUS
语言版本 : | ActionScript 3.0 |
Player 版本 : | Flash Player 9 |
在 NetConnection 对象报告其状态或错误条件时调度。 netStatus
事件包含一个 info
属性,该属性是一个包含事件特定信息(例如,连接尝试成功还是失败)的信息对象。
netStatus
事件对象的 type
属性值。
此事件具有以下属性:
属性 | 值 |
---|---|
bubbles | false |
cancelable | false ;没有要取消的默认行为。 |
currentTarget | 当前正在使用某个事件侦听器处理 Event 对象的对象。 |
info | 一个对象,具有描述对象的状态或错误情况的属性。 |
target | 报告其状态的 NetConnection 或 NetStream 对象。 |
另请参见
securityError | 事件 |
flash.events.SecurityErrorEvent
flash.events.SecurityErrorEvent.SECURITY_ERROR
语言版本 : | ActionScript 3.0 |
Player 版本 : | Flash Player 9 |
若对 NetConnection.call()
的调用尝试连接到调用方安全沙箱外部的服务器,则进行调度。
SecurityErrorEvent.SECURITY_ERROR
常量定义 securityError
事件对象的 type
属性值。
此事件具有以下属性:
属性 | 值 |
---|---|
bubbles | false |
cancelable | false ;没有要取消的默认行为。 |
currentTarget | 当前正在使用某个事件侦听器处理 Event 对象的对象。 |
target | 报告安全错误的网络对象。 |
text | 要显示为错误消息的文本。 |
另请参见
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