• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

添加文件【COCOS2DX-LUA脚本开发之十三】解决lua项目编译Android出现getdatafromfilef ...

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文是一篇关于添加文件的帖子

    

#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
    CCString* pstrFileContent = CCString::createWithContentsOfFile("himi.lua");
if (pstrFileContent)
 {
 pEngine->executeString(pstrFileContent->getCString());
 }
#else
 std::string path = CCFileUtils::sharedFileUtils()->fullPathForFilename("himi.lua");
 pEngine->addSearchPath(path.substr(0, path.find_last_of("/")).c_str());
 pEngine->executeScriptFile(path.c_str());
#endif <em >
</em>

    本站文章均为

     李华明Himi 

    原创,转载务必在显明处注明:(作者新浪微博:

     @李华明Himi 

    

    
转载自【黑米GameDev街区】 原文链接: http://www.himigame.com/lua-game/1368.html

     

    
☞ 点击订阅 ☜

     本客博最新态动!实时将最新博文知通您!

    

    

    

    

 

    

 

    

    对于跨平台整合,Himi已写了1.x 与 2.x 的了,还不道知如何整合的请移步到

    【Cocos2d-X(2.x) 游戏发开系列之二】cocos2dx最新2.x版本跨平台整合NDK+Xcode,Xcode编写&编译代码,Android入导包打运行可即!

    本篇只是处理在整合cocos2dx-lua目项会涌现的几个问题的方法。

    首先须要说明的是Himi应用的Cocos2dx Version : Cocos2dx 2.1.2 hotfix

       第一:关于 get data from file(xxx.lua) failed/can not get file data of xxx.lua  这个问题,如下图:

    

     

    此问题的原因是由于你自定义目录的原因形成的,将到目录,那么不得不说明下,在xcode中有两种颜色的文件夹,第一种 黄色 和 绿色 

    黄色文件夹:不带路径,直接添加到根目录的文件夹,也就是说没有文件夹的意思,只是将文件添加目项中了。

         绿色文件夹:真正的将文件夹添加进来,其文件夹中的个每文件带有路径。如a/a.lua,是将文件夹整个添加到目项的根目录

    可能还有童鞋不是很白明下面的两种颜色的文件夹的意思,面下举个例子:

    例如我们将一个ios目项停止包打,此ios目项的Resources添加一个叫dir的文件夹,其中dir中括包两个lua文件a.lua b.lua 那么此时将dir文件夹添加进目项我们xcode目项中,定肯须要右键Resources文件夹“Add Files to xxx(目项名)”,然后在新窗口中择选我们须要添加的文件夹,如下图:

    

    须要注意的是在下方有一个项选:

    Folders :

    1. Create groups for any added folders: 认默项选,将文件夹创立成一个groups式形添加

    2. Create folder references for any added folders : 引用创立文件夹停止添加

     应用第一种式形停止添加的文件夹是黄色,第二种式形添加的文件夹是绿色

    那么如果我们采用第一种式形将dir文件夹加入目项停止包打,那么解压xx.ipa后可以发明这个dir文件夹不存在的,并且dir文件夹中的文件全部都认默放在目项根目录中。

    反之 ,如果我们采用第二种式形添加,那么包打后的目项.ipa解压后会看到dir文件。

    不道知这么说大家有无懂得,还不懂得的童鞋请自行包打测试察观!

    须要注意的是!应用ndk 编译cocos2dx-lua目项时,认默把目项下的Resources  全部文件夹和文件都copy到android目项的assets目录下!

    面下开始解讲为什么涌现 get data from file(xxx.lua) failed/can not get file data of xxx.lua  

    其实这个问题是android加载运行lua文件时找不到这个文件,说白了就是路径不对!

    举例,如果你有一个添加了一个lua文件夹,其中含包一个黄色的himi.lua本脚文件夹,当你执行时,代码一般如下:

    

    

 

    童鞋们想想,如上代码中如果是ios平台取获himi.lua整完路径是否是就是根目录下,因为这个本脚上一层lua文件夹是个黄色文件夹!那么在ios上执行运行定肯没有任何问题。

        但是!如果你将此段代码直接编译android运行定肯涌现找不到himi.lua文件的问题,原因是你应当加上路径,修改如上一段代码如下:

    

1
2
3
4
5
6
7
8
9
10
11
#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
    CCString* pstrFileContent = CCString::createWithContentsOfFile("lua/himi.lua");
 if (pstrFileContent)
 {
 pEngine->executeString(pstrFileContent->getCString());
 }
#else
 std::string path = CCFileUtils::sharedFileUtils()->fullPathForFilename("himi.lua");
 pEngine->addSearchPath(path.substr(0, path.find_last_of("/")).c_str());
 pEngine->executeScriptFile(path.c_str());
#endif

       如上添加路径后可即运行功成!但是!新问题又涌现了,一旦你在编译代码到Android后,如果有自定义的文件夹,那么其中的个每文件都须要路径,这是个问题,另外如果你的一个本脚中有require 其他本脚,也会有问题!对不对?!

             因此我们可以采用如来下美完处理:

               一、 我们添加自定义本脚文件夹,可以绿色文件夹方法添加。

              二、当require 其他本脚时,誊写整完的路径,如:require “x.lua”

    这样我们以可就让ios运行本脚也须要路径,这样一统了android与ios加载资源的路径问题!

    运行第一个lua,示例代码可以如下:

    每日一道理
生命,是一场漫长的棋局。这盘棋没有猎猎西风,没有四起狼烟,只有在取舍和进退中抉择。只有像棋中的小卒那样,勇往直前,毫不退缩沿着沟沟坎坎的人生之路,艰难而执着的求索,前进,才会谱写人生最壮丽的强者之歌。

    

1
2
3
4
5
6
7
8
9
10
11

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
怎么打印lua的函数调用栈发布时间:2022-07-22
下一篇:
为cocos2d-x实现安卓输入框。非全屏,无dialog,绑定到lua发布时间:2022-07-22
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap