本文是一篇关于添加文件的帖子
#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 id="__mceDel">
</em>
本站文章均为
原创,转载务必在显明处注明:(作者新浪微博:
)
转载自【黑米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
12
13
14
15
16
|
std::string dirPath = "lua" ;
#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
CCString* pstrFileContent = CCString::createWithContentsOfFile((dirPath + "/x.lua" ).c_str());
if (pstrFileContent)
{
pEngine->executeString(pstrFileContent->getCString());
}
#else
std::string path = CCFileUtils::sharedFileUtils()->fullPathForFilename((dirPath + "/x.lua" ).c_str());
pEngine->addSearchPath(path.substr(0, path.find_last_of( "/" ) - dirPath.length()).c_str());
pEngine->executeScriptFile(path.c_str());
#endif
// CCDirector::sharedDirector()->runWithScene(World::scene());
return true ;
}
|
第二:在终端里应用ndk编译时涌现fata error HelloWorldScene.h No such file问题 如下图:
此问题是因为lua板模是没有此类的,所以我们修改如下文件:
找到你整合的android目项目录下的jni/hellocpp/main.cpp文件,将
#include “HelloWorldScene.h” 修改成: #include “cocos2d.h”
ok,再编译可即。
第三:类第一个问题,编译时涌现 CCLuaEngine.h: No such file 问题,如下图:
此问题须要修改你整合android目项下的jni/Android.mk 文件,如下:
首先除删 http://www.cnblogs.com/Classes/HelloWorldScene.cpp
然后在 LOCAL_WHOLE_STATIC_LIBRARIES 后添加 cocos_lua_static 库
最后添加 $(call import-module,scripting/lua/proj.android/jni)
大家可以参考引擎示例中的lua示例下的 jni/Android.mk 置配可即。其中还添加物理引擎box2d等库等
第四:Eclipse入导Android目项报错 Cocos2dxActivity cannot be resolved to a type 或 The Improt org.cocos2dx.lib cannot be resolved 问题,如下图:
种这问题是Build Path缺乏文件的link,我们置配下可即,首先右键目项然后择选Properties,然后择选“Java Build Path”,在 Source 栏目中点击“Link Source” ,如下图:
然后会涌现一个新窗口:
Linked folder location:
择选link的文件,其路径向指cocos2dx引擎目录的cocos2d-2.1rc0-x-2.1.2-hotfix/cocos2dx/platform/android/java/src 目录可即!
Folder name :
这里认默是src,如果报错,我们自定义个名字可即。
置设完成后路一finish或OK保存回返。
文章结束给大家分享下程序员的一些笑话语录: 问路
有一个驾驶热气球的人发现他迷路了。他降低了飞行的高度,并认出了地面 上的一个人。他继续下降高度并对着那个人大叫,“打扰一下,你能告诉我我 在哪吗?”
下面那个人说:“是的。你在热气球里啊,盘旋在 30 英尺的空中”。
热气球上的人说:“你一定是在 IT 部门做技术工作”。
“没错”,地面上的人说到,“你是怎么知道的?”
“呵呵”,热气球上的人说,“你告诉我的每件事在技术上都是对的,但对都没 有用”。
地面上的人说,“你一定是管理层的人”。
“没错”,热气球上的人说,“可是你是怎么知道的?”
“呵呵”,地面上的那人说到,“你不知道你在哪里,你也不知道你要去哪,你 总希望我能帮你。你现在和我们刚见面时还在原来那个地方,但现在却是我 错了”。