Quick-cocos2d-x的热更新机制实现(终极版2)(更新3.3版本)

function LauncherScene:_endUpdate()
if self._updateRetType ~= Launcher.UpdateRetType.SUCCESSED then
print(“update errorCode = %d”, self._updateRetType)
Launcher.removePath(self._curListFile)
end

enter_game()

end

请问楼主此处失败时为何要删除self._curListFile文件。这样网络差的时候不是会导致无限更新。例如:当前服务器版本为“1.0.1” 客户端底座“1.0.0” 客户端也已经更新到“1.0.1” 一切流程正常 。然后关掉网络重启更新流程原先下载好的flist被删除,导致客户端版本变回底座的“1.0.0” 又会重新下载“1.0.1”

删除filst 目的是保护更新失败后程序能正常启动。
这块可以自己定义下更新错误类型,根据不同的错误类型做不同的事情,这块只做了下保护, 不论你更新是怎么失败的,都会删除filst文件,后再进入游戏(当前逻辑就是不论更新成功或者失败都会进游戏)。

function Launcher.doFile(path)
local fileData = cc.HelperFunc:getFileData(path)
print(path)
print(fileData)
local fun = loadstring(fileData)
local ret, flist = pcall(fun)
if ret then
return flist
end

return flist

end

fileData = nil

flist 已经放到 res下了。在quick 3.3的情况下使用。
应该是没找到flist

LUA ERROR: :253: bad argument #1 to ‘loadstring’ (string expected, got nil)
请问下要怎么处理

楼主写的不错,而且非常热心 感谢分享!

我觉得你要检查一下你的路径,并且需要告知一下你在哪个平台下运行的

不是路径问题,我把文件改成filist.lua就能读到了。有点奇怪。

我想问下ios上面的平台初始化是怎么弄啊,不是很清楚这个,网上说的要去调用didFinishLaunchingWithOptions这个方法,不是很懂

didFinishLaunchingWithOptions 函数里面可以调用平台初始化的一些方法。

3.3版本 文件结构已经改变 。 AppDelegate.cpp的 内容已经大变 这方法还行得通么。难道全部替换AppDelegate。还有 http://my.oschina.net/SunLightJuly/blog/180639 这种方法不改C++ 但貌似也行不通呢

3.3是可以的啊 我目前项目就是在3.3. 上做的。

Appdelegate.cpp 内容 完全不一样呢 。好多都变了 而且存放的位置也不一样了虽然我知道在哪 。能发一个最简单的demo例子么? 文件结构和quick更新太多了 。我把所有回复都看了 还是没理清,感觉都是2.2.5以前的时代

就这几天会整理一个3.3版本的。

好的 非常期待 感谢

上传sample 2M都不行,被迫把sample中的字体删除了。

在 init.lua 中

function Launcher.readFile(path)
return cc.FileUtils:getInstance():getDataFromFile(path)
end

报错 getDataFromFile a nil value

在 init.lua 中

function Launcher.readFile(path)
return cc.FileUtils:getInstance():getDataFromFile(path)
end

报错 getDataFromFile a nil value

在git 上更新最新的代码。

在git上更新最新的代码。

git地址是什么啊?

http://github.com/dualface/v3quick