ActionScript3.0网络通信
1、Loader
Loader 类可以也只可以加载 SWF 文件或图像(JPG,PNG或GIF)文件。
网络协议基础:HTTP/RTMP
加载方法原型:Loader.load(requset:URLRequest,context:LoaderContext = null):void
var request:URLRequest = newURLRequest();
request.url = "";
request.contentType = "test/xml";
request.data = xml.toXMLString;
request.method =URLRequestMethod.POST;
(1)contentType:data 属性中内容的MIME内容类型
(2)data:要提交的数据,纯粹加载可以无此属性
(3)method:URLRequestMethod.GET ( 默认 )和 URLRequestMethod.POST
(4)url:请求的 URL 地址
2、URLLoader
URLLoader 类以文本、二进制数据或 URL 编码变量的形式从 URL 下载数据,主要用于下载文本文件、XML 或其他用于动态数据驱动应用程序的信息。
URLLoader 对象会先从 URL 中下载所有数据,然后才将数据用于 ActionScript。它会发出有关下载进度的通知,通过 bytesLoaded 和bytesTotal 属性以及已调度的事件,可以监视下载进度。
网络协议基础:HTTP/RTMP
加载方法原型:URLLoader.load(request:URLRequest):void
事件:
(1)load() 一调用,就发生 Event.OPEN 事件;
(2)加载过程中发出 ProgressEvent.PROGRESS 事件,包含 bytesLoaded:uint 和 bytesTotal:uint 属性;
(3)加载完成发出 Event.COMPLETE;
(4)加载完成或失败之前,会发出 HTTP 状态事件 HTTPStatusEvent.HTTP_STATUS;
(5)加载失败,发出 IOErrorEvent.IO_ERROT 事件;
(6)加载内容不合安全规则,发出 SecurityErrorEvent.SECURITY_ERROR。
dataFormat属性:
(1)URLLoaderDataFormat.TEXT( 默认 ):文本,包括普通文本或XML;
(2)URLLoaderDataFormat.VARIABLES:值对;
(3)URLLoaderDataFormat.BINARY:二进制,即以ByteArray对象表示的数据。
3、URLStream
URLStream 类提供对下载URL的低级访问。数据一下载,便可随即为 ActionScript 使用,而不需要像 URLLoader 等到整个文件下载完成。并且URLStream 允许在完成下载前关闭流,已下载问文件的内容将作为二进制数据提供。
网络协议基础:HTTP/RTMP
加载方法原型:URLStream.load(request:URLRequest):void
4、NetStream
NetStream 类 Flash Player 和 Flash Media
Server 之间或者 Flash Player 和本地文件系统之间打开单向流连接。NetStream 对象是 NetConnection 对象的一个通道,使用NetStream.publish() 发布流,也可以使用 NetStream.play() 订阅发布的流并接收数据。可以发布或播放实时数据及向前录制的数据,还可以使用NetStream 对象向所有已订阅的客户端发送文本信息。
网络协议基础:RTMP
加载方法原型:NetStream(connection:NetConnection)
5、Socket
Socket 类使 ActionScript 代码可以建立套接字连接并读取和写入原始二进制数据。与 XMLSocket 类似,但没有指定接收或传输的数据格式。
Socket 类与使用二进制协议的服务器一起使用时非常有用。
网络协议基础:TCP
加载方法原型:Socket.connect(host:String,port:int):void
6、XMLSocket
XMLSocket 类实现了客户端套接字,这使得 Flash Player 的计算机可以与由 IP 地址或域名标识的服务器计算机进行通信。
用于对要求滞后时间较短的客户端/服务器应用程序,如实时聊天系统。XMLSocket 聊天解决方案保持与服务器的开放连接,这一连接允许服务器即时发送传入的消息,而无需客户端发出请求。
使用 XMLSocket 类,服务器计算机必须运行可识别 XMLSocket 类使用的协议的守护程序,协议符合以下特点:
(1) XML 信息通过全双工 TCP/IP 流套接字连接发送
(2)每个 XML 信息都是一个完整的 XML 文档,以一个零( 0 )字节结束
(3)通过 XMLSocket 连接发送和接收的 XML 信息的数量没有限制
XMLSocket.connext() 方法只能连接端口号大于等于 1024 的 TCP 端口,所以服务器守护程序分配的端口号也必须大于等于 1024,端口号小于 1024 的端口通常用于系统服务(如 FTP、Telnet 和 HTTP),因此,出于安全方面的考虑,禁止 XMLSocket 对象使用这些端口。 这种端口号方面的限制可以减少不恰当地访问和滥用这些资源的可能性。
网络协议基础:TCP
链接方法原型:XMLSocket.connect(host:String,port:int):void
7、sendToTRL方法
flash.net.sendToURL(request:URLRequest)
8、navigateToURL方法
flash.net.navigateToURL(request:URLRequest, window:String=null)
9、侦听加载完成事件
根据 dataFormat 属性的不同,侦听函数也不同
(1)文本:
event.target.data
(2)值对:
var loader:URLLoader =event.target as URLLoader;
for(var i in loader:data)
{
trave(i+"\t:"+loader.data[i]);
}
(3)二进制:
var content:ByteArray =event.target.data as ByteArray
通常用来加载外部图像和动画,如果希望舞台上有多个 SWF 实例,可使用 Loader 对象的 loadBytes() 将内存中的 ByteArray 对象多次读取,效率更高。
loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE,convertHandler);
loader.loadBytes(content);
loader1、loader2、loader3……
private function convertHandler(event:Event):void
{
addChild(event.target.loader as Loader);
event.target.loader.y=100*Math.random();//纵向错开加载对象
}