需求背景:
白鷺加載資源主要使用 egret.HttpRequest 類。該類封裝了在異步加載資源和通訊方面作為H5標準的 XMLHttpRequest 對象。
本文講解的主要是加載靜態(tài)文件,分為兩種類型:文本和二進制數(shù)據(jù)。加載靜態(tài)文件的特點是可以進行進度跟蹤。
需求實現(xiàn):
1.加載文本
HttpRequest 對象最核心的方法就是 open() 和 send() 。 open() 方法接收該請求所要訪問的URL。作為可選項還可以通過加載方式,這個參數(shù)通常用 HttpMethod 取常量,成為最常用的GET方式。
在加載完成時,通過 HttpRequest 對象的 response 屬性來獲取返回的數(shù)據(jù)。
加載文本數(shù)據(jù)的方法如下:
var url = "resource/config/description.json";<font></font>
var request:egret.HttpRequest = new egret.HttpRequest();<font></font>
var respHandler = function( evt:egret.Event ):void{<font></font>
switch ( evt.type ){<font></font>
case egret.Event.COMPLETE:<font></font>
var request:egret.HttpRequest = evt.currentTarget;<font></font>
console.log( "respHandler:n", request.response );<font></font>
break;<font></font>
case egret.IOErrorEvent.IO_ERROR:<font></font>
console.log( "respHandler io error" );<font></font>
break;<font></font>
}<font></font>
}<font></font>
var progressHandler = function( evt:egret.ProgressEvent ):void{<font></font>
console.log( "progress:", evt.bytesLoaded, evt.bytesTotal );<font></font>
}<font></font>
request.once( egret.Event.COMPLETE, respHandler, null);<font></font>
request.once( egret.IOErrorEvent.IO_ERROR, respHandler, null);<font></font>
request.once( egret.ProgressEvent.PROGRESS, progressHandler, null);<font></font>
request.open( url, egret.HttpMethod.GET ); <font></font>
request.send( );
HttpRequest 默認的加載類型是TEXT,因此不需要專門設置。
需要偵聽聽的主要事件是 COMPLETE ,從這里獲取數(shù)據(jù)。
要考慮意外的情況,在IO_ERROR做這些情況的處理。
加載進度事件是 ProgressEvent.PROGRESS ,在加載內(nèi)容中大的資源時比較有用。
2.加載二進制
加載二進制數(shù)據(jù)的方法如下:
var url = "resource/assets/egret_icon.png";<font></font>
var request:egret.HttpRequest = new egret.HttpRequest();<font></font>
request.responseType = egret.HttpResponseType.ARRAY_BUFFER;<font></font>
var respHandler = function( evt:egret.Event ):void {<font></font>
switch ( evt.type ){<font></font>
case egret.Event.COMPLETE:<font></font>
var request:egret.HttpRequest = evt.currentTarget;<font></font>
var ab:ArrayBuffer = request.response;<font></font>
console.log( "respHandler:n", ab.byteLength );<font></font>
break;<font></font>
case egret.IOErrorEvent.IO_ERROR:<font></font>
console.log( "respHandler io error" );<font></font>
break;<font></font>
}<font></font>
}<font></font>
request.once( egret.Event.COMPLETE, respHandler, null);<font></font>
request.once( egret.IOErrorEvent.IO_ERROR, respHandler, null);<font></font>
request.open( url, egret.HttpMethod.GET );<font></font>
request.send( );
加載二進制數(shù)據(jù),先設置 的加載類型為 。數(shù)據(jù)加載完成后可從 屬性取到 對象,即可進行進一步讀取操作。 HttpRequestARRAY_BUFFER
responseArrayBuffer