白鹭引擎-自定义资源处理器, 解析加密资源

白鹭引擎支持自定义资源加载器, 可以方便的使用加密资源;
例如有一个 expmble.png, 加密后为 example.png.enc

下面是自定义资源处理器的示例:

 在Main.ts里面, 注册一个自定义的解析器, EncryptAnalyzer;

 

//Main.ts入口文件, 增加enc格式注册

RES.processor.map("enc",EncryptAnalyzer);

  

增加 EncryptAnalyzer.ts  文件


//EncryptAnalyzer.ts var EncryptAnalyzer:RES.processor.Processor = { onLoadStart(host,resource){ return new Promise(( reslove ,reject ) => { var request: egret.HttpRequest = new egret.HttpRequest(); request.responseType = egret.HttpResponseType.ARRAY_BUFFER; request.open(resource.root+resource.url, "get"); request.send(); let onSuccess = ()=>{ let bufData = request['response'];
          //对加密的数据, 使用xxtea解密 let _xxtea = xxtea.getInstance(); let bytes = _xxtea.decrypt(new Uint8Array(bufData), 'password'); egret.BitmapData.create('arraybuffer', bytes, function(bmpData){ let texture = new egret.Texture(); texture._setBitmapData(bmpData); return reslove(texture); }); } request.addEventListener(egret.Event.COMPLETE, onSuccess, this); }) }, onRemoveStart(host,resource){ let texture = host.get(resource); texture.dispose(); return Promise.resolve(); } }

  

 

posted on 2018-08-06 11:22  胖子羊  阅读(1343)  评论(0编辑  收藏  举报