quick-lua AssetsManager 热更新代码
来源:互联网 发布:桔城seo伪原创工具 编辑:程序博客网 时间:2024/05/17 08:22
网上关于热更新文章很多,我在官方例子及js的代码基础上做了移植
quick-lua版本 3.5
UpdateScene类
local UpdateScene = class("UpdateScene", cc.Scene)function UpdateScene:ctor() endfunction UpdateScene:onExit() if self.am_ then self.am_:release() self.am_ = nil endendfunction UpdateScene:run() self.layer_ = cc.Layer:create() self:addChild(self.layer_) local winSize = cc.Director:getInstance():getWinSize() local lblProgress = cc.Label:createWithTTF("0%","fonts/fzy4.ttf",40) lblProgress:setPosition(cc.p(winSize.width/2, winSize.height/2 + 50)) self.layer_:addChild(lblProgress) self.storagePath_ = cc.FileUtils:getInstance():getWritablePath() .. "/".."game_assets" self.am_ = cc.AssetsManagerEx:create("res/project.manifest", self.storagePath_) self.am_:retain() if self.am_:getLocalManifest():isLoaded() then local localManifest = self.am_:getLocalManifest() print(localManifest:getVersion()) end local failCount = 0 if not self.am_:getLocalManifest():isLoaded() then print("Fail to update assets, step skipped.") self:startGame() else local function onUpdateEvent(event) local eventCode = event:getEventCode() if eventCode == cc.EventAssetsManagerEx.EventCode.ERROR_NO_LOCAL_MANIFEST then print("No local manifest file found, skip assets update.") self:startGame() elseif eventCode == cc.EventAssetsManagerEx.EventCode.NEW_VERSION_FOUND then elseif eventCode == cc.EventAssetsManagerEx.EventCode.UPDATE_PROGRESSION then local assetId = event:getAssetId() local percent = event:getPercent() local percentByFile = event:getPercentByFile() local strInfo = "" if assetId == cc.AssetsManagerExStatic.VERSION_ID then strInfo = string.format("Version file: %d%%", percent) elseif assetId == cc.AssetsManagerExStatic.MANIFEST_ID then strInfo = string.format("Manifest file: %d%%", percent) else strInfo = string.format("%d%%", percent) end lblProgress:setString(strInfo) elseif eventCode == cc.EventAssetsManagerEx.EventCode.ERROR_DOWNLOAD_MANIFEST or eventCode == cc.EventAssetsManagerEx.EventCode.ERROR_PARSE_MANIFEST then print("Fail to download manifest file, update skipped.") self:startGame() elseif eventCode == cc.EventAssetsManagerEx.EventCode.ALREADY_UP_TO_DATE or eventCode == cc.EventAssetsManagerEx.EventCode.UPDATE_FINISHED then print("Update finished.") self:startGame() elseif eventCode == cc.EventAssetsManagerEx.EventCode.UPDATE_FAILED then print("Update failed. ", event:getMessage()) failCount = failCount + 1 if (failCount < 5) then that.am_:downloadFailedAssets() else print("Reach maximum fail count, exit update process") failCount = 0 self:startGame() end elseif eventCode == cc.EventAssetsManagerEx.EventCode.ERROR_UPDATING then print("Asset ", event:getAssetId(), ", ", event:getMessage()) self:startGame() elseif eventCode == cc.EventAssetsManagerEx.EventCode.ERROR_DECOMPRESS then print(event:getMessage()) self:startGame() end end local listener = cc.EventListenerAssetsManagerEx:create(self.am_, onUpdateEvent) cc.Director:getInstance():getEventDispatcher():addEventListenerWithFixedPriority(listener, 1) self.am_:update() end if cc.Director:getInstance():getRunningScene() then cc.Director:getInstance():replaceScene(self) else cc.Director:getInstance():runWithScene(self) endendfunction UpdateScene:startGame() local searchPaths = cc.FileUtils:getInstance():getSearchPaths() table.insert(searchPaths, 1, self.storagePath_.."/res") table.insert(searchPaths, 1, self.storagePath_.."/src") cc.FileUtils:getInstance():setSearchPaths(searchPaths) require("app.MyApp").new():run()endreturn UpdateScene
local UpdateScene = require "app.scenes.UpdateScene"local scene = UpdateScene.new()scene:run()
QQ群:239759131 cocos 技术交流 欢迎您
0 0
- quick-lua AssetsManager 热更新代码
- lua代码热更新
- skynet 热更新 lua 代码
- cocos2d-js 热更新模块 使用AssetsManager
- C++结合LUA实现代码热更新
- 7------cocos2dx 3.1.1 在线热更新 自动更新(AssetsManager)
- quick-cocos2d-x的热更新机制实现<四>update包(lua)(上)
- quick-cocos2d-x的热更新机制实现<四>update包(lua)(中)
- quick-cocos2d-x的热更新机制实现<四>update包(lua)(下)
- lua 热更新
- lua 热更新
- lua 热更新
- lua 热更新
- cocos2dx lua 热更新
- lua 热更新
- 热更新lua语法
- cocos2dx lua 热更新
- cocos2dx lua 热更新
- Android 5.1 Phone MT(来电)流程分析(Framework层)
- Apache安装(Linux)
- git撤消修改
- Wordpress调试
- hihoCoder - 1014 - Trie树
- quick-lua AssetsManager 热更新代码
- 数模转换模块PCF8591
- 如何正确清空cin缓存
- Mac安装python-virtualenv与virtualenv使用
- 如何在内核中添加新的驱动配置选项
- UI学习概览
- 太陰逆生倒成 太陽倒生逆成
- hdu 1874 畅通工程续 (裸的 Dijkstra)
- 使用ffmpeg.exe进行转码参数说明