AppGallery Connect:白鷺快游戲如何實現(xiàn)加載文本和二進制文件

來源: 華為開發(fā)者論壇
作者:市長主義
時間:2021-03-05
17309
白鷺加載資源主要使用 egret.HttpRequest 類。該類封裝了在異步加載資源和通訊方面作為H5標準的 XMLHttpRequest 對象。

pexels-max-deroin-51415.jpg

需求背景:

白鷺加載資源主要使用 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

立即登錄,閱讀全文
版權(quán)說明:
本文內(nèi)容來自于華為開發(fā)者論壇,本站不擁有所有權(quán),不承擔相關法律責任。文章內(nèi)容系作者個人觀點,不代表快出海對觀點贊同或支持。如有侵權(quán),請聯(lián)系管理員(zzx@kchuhai.com)刪除!
掃碼登錄
打開掃一掃, 關注公眾號后即可登錄/注冊
加載中
二維碼已失效 請重試
刷新
賬號登錄/注冊
個人VIP
小程序
快出海小程序
公眾號
快出海公眾號
商務合作
商務合作
投稿采訪
投稿采訪
出海管家
出海管家