求助 cocos-js 热更新 如何找到下载的新文件?

根据教程弄了一个新项目,把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

求助。有没使用jsb的大神?在线等

你需要看下你下载到本地的路径, var storagePath = (jsb.fileUtils ? jsb.fileUtils.getWritablePath() : “./”);然后这里"./“试试改成相对路径。比如你下载到了一个update文件夹,这里改成”./update"试试看