cocos2d-js 热更新模块 使用AssetsManager

cocos2d-js 热更新模块 使用AssetsManager,第1张

概述原帖子地址:http://cn.cocos2d-x.org/tutorial/show?id=1186 在这个文章中原作者已经说的很清楚,我在这个其他改动一些适用我项目中需求 1.满足Web和Native一套工程:为了维护方便 2.检测更新每天只执行一次:每次打开会等待,一天打开多次会卡多次。这个改动只适合自己的 AssetsManager 类: var __failCount = 0;to


原帖子地址:http://cn.cocos2d-x.org/tutorial/show?ID=1186

在这个文章中原作者已经说的很清楚,我在这个其他改动一些适用我项目中需求


1.满足Web和Native一套工程:为了维护方便

2.检测更新每天只执行一次:每次打开会等待,一天打开多次会卡多次。这个改动只适合自己的


AssetsManager 类:


var __failCount = 0;toFix = function(num,length) {    return ('' + num).length < length ? ((new Array(length + 1)).join('0') + num).slice(-length) : '' + num;};var AssetsManagerLoaderScene = cc.Scene.extend({    _am:null,_progress:null,_percent:0,_percentByfile:0,_progresstext : "",run:function(){        if (!cc.sys.isNative){            this.loadGame();            return;        }        else{            var myDate = new Date();            var year = myDate.getFullYear();            var month = toFix(myDate.getMonth() + 1,2);            var day = toFix(myDate.getDate(),2);            var NowDate = year + "" + month + "" + day;            var lastDate = cc.sys.localstorage.getItem("kAssetsDate");            //一天只检测一次            if(parseInt(NowDate) > parseInt(lastDate)                || lastDate == null                || lastDate == undefined                || lastDate == ""){                cc.sys.localstorage.setItem("kAssetsDate",NowDate);            }            else{                this.loadGame();                return;            }        }        var layer = new cc.Layer();        this.addChild(layer);        this._progresstext = "升级中 ";        if(cc.sys.language == cc.sys.LANGUAGE_ENGliSH){            this._progresstext = "UPDATING ";        }        this._progress = new cc.LabelTTF(this._progresstext +"0.00%","Arial",40);        this._progress.x = cc.winSize.wIDth / 2;        this._progress.y = cc.winSize.height / 2 + 50;        layer.addChild(this._progress);        // androID: /data/data/com.huanle.magic/files/        var storagePath = (Jsb.fileUtils ? Jsb.fileUtils.getWritablePath() : "/");        cc.log("AssetsManagerLoaderScene storagePath="+storagePath);        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        {//            cc.log("packageUrl = "+);            var that = this;            var Listener = new Jsb.EventListenerAssetsManager(this._am,function(event) {                cc.log("Listener................");                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();                        that._percentByfile = event.getPercentByfile();                        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:                    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 < 5)                        {                            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(){        cc.log("loadGame");        if (cc.sys.isNative){            cc.loader.loadJs(["src/files.Js"],function(err){                cc.loader.loadJs(Jsfiles,function(err){                    cc.LoaderScene.preload(g_resources,function () {                        cc.director.runScene(new MainScene());                    },this);                });            });        }        else{            cc.LoaderScene.preload(g_resources,function () {                cc.director.runScene(new MainScene());            },this);        }    },updateProgress:function(dt){        this._progress.string = this._progresstext + this._percent.toFixed(2)+"%";//"" + this._percent;    },onExit:function(){        cc.log("AssetsManager::onExit");        this._am.release();        this._super();    }});


QQ群:239759131 cocos 技术交流 欢迎您

总结

以上是内存溢出为你收集整理的cocos2d-js 热更新模块 使用AssetsManager全部内容,希望文章能够帮你解决cocos2d-js 热更新模块 使用AssetsManager所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1067924.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存