Skip to content

Latest commit

 

History

History
executable file
·
74 lines (62 loc) · 3.08 KB

README.md

File metadata and controls

executable file
·
74 lines (62 loc) · 3.08 KB

Egret 加载资源主要使用 egret.HttpRequest 类。该类封装了在异步加载资源和通讯方面作为 H5 标准的 XMLHttpRequest 对象。

本节讲解的主要是加载静态文件,分为两种类型:文本和二进制数据。 加载静态文件的特点是可以进行进度跟踪。

1.加载文本

HttpRequest 对象最核心的方法就是 open()send()open() 方法接收该请求所要访问的URL。 作为可选项还可以传入加载方式,这个参数通常用 HttpMethod 取常量,默认是最常用的 GET 方式。
在加载完成时,通过 HttpRequest 对象的 response 属性来获取返回的数据。
加载文本数据的方法如下:

var url = "resource/config/description.json";
var  request:egret.HttpRequest = new egret.HttpRequest();
        
var respHandler = function( evt:egret.Event ):void{
   switch ( evt.type ){
       case egret.Event.COMPLETE:
           var request:egret.HttpRequest = evt.currentTarget;
           console.log( "respHandler:n", request.response );
           break;
       case egret.IOErrorEvent.IO_ERROR:
           console.log( "respHandler io error" );
           break;
   }
}
        
var progressHandler = function( evt:egret.ProgressEvent ):void{
   console.log( "progress:", evt.bytesLoaded, evt.bytesTotal );
}

request.once( egret.Event.COMPLETE, respHandler, null);
request.once( egret.IOErrorEvent.IO_ERROR, respHandler, null);
request.once( egret.ProgressEvent.PROGRESS, progressHandler, null);
request.open( url, egret.HttpMethod.GET ); 
request.send( );

HttpRequest 默认的加载类型是 TEXT ,因此不需要专门设定。 需要侦听的主要事件是 COMPLETE ,从这里获取数据。
要考虑意外的情况,在 IO_ERROR 做这些情况的处理。 加载进度事件是 ProgressEvent.PROGRESS , 在加载内容较大的资源时比较有用。

2.加载二进制

加载二进制数据的方法如下:

var url = "resource/assets/egret_icon.png";
var  request:egret.HttpRequest = new egret.HttpRequest();
request.responseType = egret.HttpResponseType.ARRAY_BUFFER;

var respHandler = function( evt:egret.Event ):void {
   switch ( evt.type ){
       case egret.Event.COMPLETE:
           var request:egret.HttpRequest = evt.currentTarget;
           var ab:ArrayBuffer = request.response;
           console.log( "respHandler:n", ab.byteLength );
           break;
       case egret.IOErrorEvent.IO_ERROR:
           console.log( "respHandler io error" );
           break;
   }
}

request.once( egret.Event.COMPLETE, respHandler, null);
request.once( egret.IOErrorEvent.IO_ERROR, respHandler, null);
request.open( url, egret.HttpMethod.GET );
request.send( );

加载二进制数据,先设置 HttpRequest 的加载类型为 ARRAY_BUFFER
数据加载完成后可从 response 属性取到 ArrayBuffer 对象,即可进行进一步读取操作。

通过 URLLoader 构建通信请求请访问: URLLoader网络通讯 URLLoader 类已移动到 game 扩展库中。