Lua部分,运行在Android上出现的问题

在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");