热更新部分几乎完全按照官网的教程来的jsb.EventListenerAssetsManager回掉函数的代码如下:
updateCb: function (event) {
var needRestart = false;
var failed = false;
var code = event.getEventCode()
switch (code)
{
case jsb.EventAssetsManager.ERROR_NO_LOCAL_MANIFEST:{
cc.log('No local manifest file found, hot update skipped.');
this.lblErr.string += 'No local manifest file found, hot update skipped.\n';
failed = true;
break;
}
case jsb.EventAssetsManager.UPDATE_PROGRESSION:{
var percent = event.getPercent();
var percentByFile = event.getPercentByFile();
var msg = event.getMessage();
if (msg) {
cc.log(msg);
}
cc.log(percent.toFixed(2) + '%');
this.percent.string = percent + '%';
break;
}
case jsb.EventAssetsManager.ERROR_DOWNLOAD_MANIFEST:{
this.lblErr.string += 'ERROR_DOWNLOAD_MANIFEST\n';}
case jsb.EventAssetsManager.ERROR_PARSE_MANIFEST:{
cc.log('Fail to download manifest file, hot update skipped.');
this.lblErr.string += 'Fail to download manifest file, hot update skipped.\n';
failed = true;
break;}
case jsb.EventAssetsManager.ALREADY_UP_TO_DATE:{
cc.log('Already up to date with the latest remote version.');
this.lblErr.string += 'Already up to date with the latest remote version.\n';
failed = true;
break;}
case jsb.EventAssetsManager.UPDATE_FINISHED:{
cc.log('Update finished. ' + event.getMessage());
this.lblErr.string += 'Update finished. ' + event.getMessage() + '\n';
needRestart = true;
break;}
case jsb.EventAssetsManager.UPDATE_FAILED:{
cc.log('Update failed. ' + event.getMessage());
this.lblErr.string += 'Update failed. ' + event.getMessage() + '\n';
this._failCount ++;
if (this._failCount < 5)
{
this._am.downloadFailedAssets();
}
else
{
cc.log('Reach maximum fail count, exit update process');
this.lblErr.string += 'Reach maximum fail count, exit update process\n';
this._failCount = 0;
failed = true;
}
break;}
case jsb.EventAssetsManager.ERROR_UPDATING:{
cc.log('Asset update error: ' + event.getAssetId() + ', ' + event.getMessage());
this.lblErr.string += 'Asset update error: ' + event.getAssetId() + ', ' + event.getMessage() + '\n';
break;}
case jsb.EventAssetsManager.ERROR_DECOMPRESS:{
cc.log(event.getMessage());
this.lblErr.string += event.getMessage() + 'ERROR_DECOMPRESS\n';
break;}
default:{
this.lblErr.string += 'CODE is ' +code+'\n';
break;}
}
//this.lblErr.string += 'failed is '+ failed + "and needRestart is " + needRestart;
if (failed) {
cc.eventManager.removeListener(this._updateListener);
this.updatePanel.active = false;
}
if (needRestart) {
cc.eventManager.removeListener(this._updateListener);
// Prepend the manifest's search path
var searchPaths = jsb.fileUtils.getSearchPaths();
var newPaths = this._am.getLocalManifest().getSearchPaths();
Array.prototype.unshift(searchPaths, newPaths);
// This value will be retrieved and appended to the default search path during game startup,
// please refer to samples/js-tests/main.js for detailed usage.
// !!! Re-add the search paths in main.js is very important, otherwise, new scripts won't take effect.
cc.sys.localStorage.setItem('HotUpdateSearchPaths', JSON.stringify(searchPaths));
jsb.fileUtils.setSearchPaths(searchPaths);
this.lblErr.string += "游戏资源更新完毕\n";
cc.game.restart();
}
},
因为发现没有错误信息反馈回来,所以我再default那里输出了一下code,重新打包发现code是3,连续出现了2次,并且除了更新进度没有返回其他错误码,更新进度已经到100%,3应该不等于任何一条错误码,所以现在定位不了问题。
程序热更新那块开始的输出如下:
01-31 15:10:45.816: D/cocos2d-x debug info(4177): Success to load scene: db://assets/resources/scenes/update.fire
01-31 15:10:45.844: D/cocos2d-x(4177): find in flash memory dirPath(/data/data/com.lailai.yzmj/files/tiantianqipai-asset/)
01-31 15:10:46.009: D/Cocos2dxDownloader(4177): onSuccess(i:200 headers:[Lcz.msebera.android.httpclient.Header;@1e99d779 file:/data/data/com.lailai.yzmj/files/tiantianqipai-asset/version.manifest.tmp
01-31 15:10:46.326: D/Cocos2dxDownloader(4177): onSuccess(i:200 headers:[Lcz.msebera.android.httpclient.Header;@3a1b5c6c file:/data/data/com.lailai.yzmj/files/tiantianqipai-asset/project.manifest.temp.tmp
01-31 15:10:46.355: D/Cocos2dxDownloader(4177): onSuccess(i:200 headers:[Lcz.msebera.android.httpclient.Header;@3b577235 file:/data/data/com.lailai.yzmj/files/tiantianqipai-asset/project.manifest.temp.tmp
好像也没有什么报错,希望大神指导下,最关键就是这个code 3是什么含义