根据教程弄了一个新项目,把app.js放在服务端,内容是一个helloWord场景。 如果下载成功会自动运行。 配置好服务端的下载url了,就是AssetsManager下载提示UPDATE_FINISHED之后,loadGame()的时候没有成功加载jsList。 找不到下载的js目录文件(我命名为newPath)的路径, 程序跑到loadJs 却没有跑进去。
代码如下:
//------------------------- 本地 project.manifest ----------------
{
“packageUrl” : “http://xxx.xxx.com/”,
“remoteManifestUrl” : “http://xxx.xxx.com/project.manifest”,
“remoteVersionUrl” : “http://xxx.xxx.com/version.manifest”,
“version” : “1.0.1”,
“engineVersion” : “cocos2d-x-3.7”,
“assets” : { },
“searchPaths” : []
}
//------------------------- project.manifest ----------------
{
“packageUrl” : “http://xxx.xxx.com/”,
“remoteManifestUrl” : “http://xxx.xxx.com/project.manifest”,
“remoteVersionUrl” : “http://xxx.xxx.com/version.manifest”,
“version” : “1.0.2”,
“engineVersion” : “cocos2d-x-3.7”,
“assets” : {
“hotFix.zip” : {
“compressed” : true
}
},
“searchPaths” : [ ]
}
//------------------------- version.manifest ----------------
{
“packageUrl” : “http://xxx.xxx.com/”,
“remoteManifestUrl” : “http://xxx.xxx.com/project.manifest”,
“remoteVersionUrl” : “http://xxx.xxx.com/version.manifest”,
“version” : “1.0.2”,
“engineVersion” : “cocos2d-x-3.7”
}
//------------------------- main.js ------------------------
cc.game.onStart = function(){
if(!cc.sys.isNative && document.getElementById(“cocosLoading”)) {
document.body.removeChild(document.getElementById(“cocosLoading”));
}
cc.view.enableRetina(false);
cc.view.adjustViewPort(true);
cc.view.setDesignResolutionSize(800, 450, cc.ResolutionPolicy.SHOW_ALL);
cc.view.resizeWithBrowserSize(true);
var failCount = 0;
var maxFailCount = 1; //最大错误重试次数
var AssetsManagerLoaderScene = cc.Scene.extend({
_am:null,
_progress:null,
_percent:0,
run:function(){
if (!cc.sys.isNative) {
this.loadGame();
return;
}
var layer = new cc.Layer();
this.addChild(layer);
this._progress = new cc.LabelTTF.create("update 0%", "Arial", 12);
this._progress.x = cc.winSize.width / 2;
this._progress.y = cc.winSize.height / 2 + 50;
layer.addChild(this._progress);
var storagePath = (jsb.fileUtils ? jsb.fileUtils.getWritablePath() : "./");
this._am = new jsb.AssetsManager("res/project.manifest", storagePath);
this._am.retain();
if (!this._am.getLocalManifest().isLoaded())
{
cc.log("Fail to update assets, step skipped.");
this.loadGame();
}
else
{
var that = this;
var listener = new jsb.EventListenerAssetsManager(this._am, function(event) {
switch (event.getEventCode()){
case jsb.EventAssetsManager.ERROR_NO_LOCAL_MANIFEST:
cc.log("No local manifest file found, skip assets update.");
that.loadGame();
break;
case jsb.EventAssetsManager.UPDATE_PROGRESSION:
that._percent = event.getPercent();
cc.log(that._percent + "%");
var msg = event.getMessage();
if (msg) {
cc.log(msg);
}
break;
case jsb.EventAssetsManager.ERROR_DOWNLOAD_MANIFEST:
case jsb.EventAssetsManager.ERROR_PARSE_MANIFEST:
cc.log("Fail to download manifest file, update skipped.");
that.loadGame();
break;
case jsb.EventAssetsManager.ALREADY_UP_TO_DATE:
cc.log("ALREADY_UP_TO_DATE.");
that.loadGame();
break;
case jsb.EventAssetsManager.UPDATE_FINISHED:
cc.log("Update finished.");
that.loadGame();
break;
case jsb.EventAssetsManager.UPDATE_FAILED:
cc.log("Update failed. " + event.getMessage());
failCount++;
if (failCount < maxFailCount)
{
that._am.downloadFailedAssets();
}
else
{
cc.log("Reach maximum fail count, exit update process");
failCount = 0;
that.loadGame();
}
break;
case jsb.EventAssetsManager.ERROR_UPDATING:
cc.log("Asset update error: " + event.getAssetId() + ", " + event.getMessage());
that.loadGame();
break;
case jsb.EventAssetsManager.ERROR_DECOMPRESS:
cc.log(event.getMessage());
that.loadGame();
break;
default:
break;
}
});
cc.eventManager.addListener(listener, 1);
this._am.update();
cc.director.runScene(this);
}
this.schedule(this.updateProgress, 0.5);
},
loadGame:function(){
// 就是这里无法loadJs,覆盖了路径也找不到
cc.loader.loadJs(["src/newPath.js"], function(err){
cc.loader.loadJs(newPath, function(){
cc.director.runScene(new HelloWorldScene()); // 如果加载了下载得到的app.js,这里会运行新场景
});
});
},
updateProgress:function(dt){
this._progress.string = "update" + this._percent + "%";
},
onExit:function(){
cc.log("AssetsManager::onExit");
this._am.release();
this._super();
}
});
var scene = new AssetsManagerLoaderScene();
scene.run();
};
cc.game.run();
// ----------------- 下载的zip 内容----------------
xxx.zip:
src(文件夹): app.js, newPath.js (内容:var newPath = [ “res/resource.js”, “src/app.js” ])
res(文件夹): resource.js, image(文件夹): 0012.png