在Android上运行时出了点问题…如图:
286
在Android这段里,添加了一句:
pEngine->addSearchPath(“scripts”);
但是运行后手机上显示:
Get data from file(assets/common.lua)failed!
引擎还是去assets根目录找.结果自然找不到. 应该是在assets/scripts/common.lua
cocos2dx没有直接在Android这段里加上addSearchPath()是出于什么原因?
在Android上运行时出了点问题…如图:
286
在Android这段里,添加了一句:
pEngine->addSearchPath(“scripts”);
但是运行后手机上显示:
Get data from file(assets/common.lua)failed!
引擎还是去assets根目录找.结果自然找不到. 应该是在assets/scripts/common.lua
cocos2dx没有直接在Android这段里加上addSearchPath()是出于什么原因?
这是一个bug,你可以在Cocos2dxLuaLoader.cpp里的loader_Android函数中找到这段出错信息。
它只加载文件名对应的文件,但是不会到脚本目录里去找,因此出错了,而且很奇怪,你即使不require某个文件,只要加入路径,文件就会加载,不信你试试随便cclog下,都能显示出来,即使你不require这个文件。
非常感谢.
刚遇到过,学习了
刚遇到这个问题,就找到这里来了,太感谢2楼了。把Cocos2dxLuaLoader.cpp改一下,将路径中的".“改成”/",就好了。
如下:
std::string filename(luaL_checkstring(L, 1));
std::string strsrc(".");
std::string strdst("/");
std::string::size_type pos = 0;
std::string::size_type srclen = strsrc.size();
std::string::size_type dstlen = strdst.size();
while( (pos=filename.find(strsrc, pos)) != std::string::npos )
{
filename.replace( pos, srclen, strdst );
pos += dstlen;
}
filename.append(".lua");
我现在是在Cocos2dxLuaLoader.cpp中 直接插了一句: filename.insert(0, “scripts/”);
这是一个bug,你可以在Cocos2dxLuaLoader.cpp里的loader_Android函数中找到这段出错信息。
它只加载文件名对应的文件,但是不会到脚本目录里去找,因此出错了,而且很奇怪,你即使不require某个文件,只要加入路径,文件就会加载,不信你试试随便cclog下,都能显示出来,即使你不require这个文件。
刚遇到这个问题,就找到这里来了,太感谢2楼了。把Cocos2dxLuaLoader.cpp改一下,将路径中的".“改成”/",就好了。
如下:
std::string filename(luaL_checkstring(L, 1));
std::string strsrc(".");
std::string strdst("/");
std::string::size_type pos = 0;
std::string::size_type srclen = strsrc.size();
std::string::size_type dstlen = strdst.size();
while( (pos=filename.find(strsrc, pos)) != std::string::npos )
{
filename.replace( pos, srclen, strdst );
pos += dstlen;
}
filename.append(".lua");