- 本帖最后由 pleasenter 于 2012-7-9 23:55 编辑 *
我写的lua脚本游戏希望能够自动升级lua脚本,所以就必须建一个文件夹然后写入下载的lua文件,在win32下这个没有问题,但是在android下没法向当前路径也就是assets目录写入任何东西,所以只有先gerWriteablePath,然后在这个目录下写入我的脚本文件。然后就是addSearchPath,最后require其中的脚本,这时候就会得到一个错误:can not get file data of %s。
我查了下,这是因为安卓的导入lua文件的方法不一样,它在Cocos2dxLuaLoader.cpp这个文件里定义里一个loader_Android的函数,然后lua的require都是通过这个函数来做的,我不知道这是为什么,但是在这个函数里面它只简单的加载require文件名对应的文件,没有目录信息,这就导致加载非根目录(assets)下的文件时会找不到文件,最后就直接报错。
要测试这个bug很简单,在hellolua的resources目录下新建一个目录,然后把hello2.lua文件移到该目录下,最后addSearchPath该目录然后编译运行,你会发现没法require “hello2”。