最近刚刚研究cocos2d-x,以前主要是开发android应用,但是,怎么说呢,android有点没落啊。所以稍微偏一偏,cocos2d-x可以跨平台的嘛,搞开发的人应该都比较喜欢这种一劳永逸的东西吧。为了督促自己一步一个脚印的学习,以后学到知识都到这里总结一下,一则巩固自己的劳动成果,二来可以与大家分享。
闲话到此,下面我简略的写一下我搭建cocos的环境搭建的步骤和遇到的问题,总体分以下几步:
1 下载cocos2d-x,解压完事
2 安装vs2010(我用的是vs2010,当前版本的cocos还支持vs2012)
3 安装cocos模板到vs2010
4 如果需要编译android版本的游戏,就要在加上一下几步:
3.1 android所需的所有环境,jdk、eclipse、sdk等
3.2 下载android ndk ndk用来把c/c++代码编译成通过jni调用的.so文件
3.3 安装cygwin 用来模拟linux环境,使ndk在此环境进行编译
下面进行详细讲解:
上面第1步很简单,到官网下载后解压,不在这细说
第2步可以在百度很容易找到相关资料,很容易安装,也不会出什么问题
第3步,用文本编辑器打开cocos2d-x目录下template\msvc\CCAppWiz.win32\Scripts\1033下的default.js,找到AddConfigurations函数,按照下面进行修改
// Additional Inlcude Directories
var strAddIncludeDir = '.;..\\Classes';
strAddIncludeDir = ';G:\\Cocos2d-x\\cocos2dx';
strAddIncludeDir = ';G:\\Cocos2d-x\\cocos2dx\\actions';
strAddIncludeDir = ';G:\\Cocos2d-x\\cocos2dx\\base_nodes';
strAddIncludeDir = ';G:\\Cocos2d-x\\cocos2dx\\cocoa';
strAddIncludeDir = ';G:\\Cocos2d-x\\cocos2dx\\effects';
strAddIncludeDir = ';G:\\Cocos2d-x\\cocos2dx\\include';
strAddIncludeDir = ';G:\\Cocos2d-x\\cocos2dx\\kazmath\\include';
strAddIncludeDir = ';G:\\Cocos2d-x\\cocos2dx\\keypad_dispatcher';
strAddIncludeDir = ';G:\\Cocos2d-x\\cocos2dx\\label_nodes';
strAddIncludeDir = ';G:\\Cocos2d-x\\cocos2dx\\layers_scenes_transitions_nodes';
strAddIncludeDir = ';G:\\Cocos2d-x\\cocos2dx\\menu_nodes';
strAddIncludeDir = ';G:\\Cocos2d-x\\cocos2dx\\misc_nodes';
strAddIncludeDir = ';G:\\Cocos2d-x\\cocos2dx\\particle_nodes';
strAddIncludeDir = ';G:\\Cocos2d-x\\cocos2dx\\script_support';
strAddIncludeDir = ';G:\\Cocos2d-x\\cocos2dx\\shaders';
strAddIncludeDir = ';G:\\Cocos2d-x\\cocos2dx\\sprite_nodes';
strAddIncludeDir = ';G:\\Cocos2d-x\\cocos2dx\\support';
strAddIncludeDir = ';G:\\Cocos2d-x\\cocos2dx\\text_input_node';
strAddIncludeDir = ';G:\\Cocos2d-x\\cocos2dx\\textures';
strAddIncludeDir = ';G:\\Cocos2d-x\\cocos2dx\\tileMap_parallax_nodes';
strAddIncludeDir = ';G:\\Cocos2d-x\\cocos2dx\\touch_dispatcher';
strAddIncludeDir = ';G:\\Cocos2d-x\\cocos2dx\\platform';
strAddIncludeDir = ';G:\\Cocos2d-x\\cocos2dx\\platform\\win32';
strAddIncludeDir = ';G:\\Cocos2d-x\\cocos2dx\\platform\\third_party\\win32';
strAddIncludeDir = ';G:\\Cocos2d-x\\cocos2dx\\platform\\third_party\\win32\\OGLES';
if (wizard.FindSymbol('CC_USE_BOX2D')) {
strAddIncludeDir = ';G:\\Cocos2d-x\\';
}
if (wizard.FindSymbol('CC_USE_CHIPMUNK')) {
strAddIncludeDir = ';G:\\Cocos2d-x\\chipmunk\\include\\chipmunk';
}
if (wizard.FindSymbol('CC_USE_COCOS_DENSHION_SIMPLE_AUDIO_ENGINE')) {
strAddIncludeDir = ';G:\\Cocos2d-x\\CocosDenshion\\Include';
}
if (wizard.FindSymbol('CC_USE_LUA')) {
strAddIncludeDir = ';G:\\Cocos2d-x\\lua\\cocos2dx_support';
strAddIncludeDir = ';G:\\Cocos2d-x\\lua\\tolua';
strAddIncludeDir = ';G:\\Cocos2d-x\\lua\\lua';
}
function GetTargetName(strName, strProjectName) {
try {
var strTarget = strName;
var nIndex = strName.indexOf("root");
if (nIndex >= 0) {
strTarget = strName.substring(0, nIndex) strProjectName strName.substring(nIndex 4, strName.length);
}
var strTemp = "G:/Cocos2d-x/lua/lua";
nIndex = strTarget.indexOf(strTemp);
if (nIndex >= 0) {
strTarget = "Classes" strTarget.substring(nIndex strTemp.length, strTarget.length);
}
return strTarget;
}
catch (e) {
throw e;
}
}
修改完毕后, 双击cocos2d-x目录下的install-templates-msvc.bat文件,会执行一些bat处理命令,再打开vs2010就能看到新建项目时有了cocos的选项
到此,如果幸运的话,vs下开发cocos的环境就搭建好了,可以新建cocos项目测试。点击cocos模板,填写项目名等,会弹出提示窗口,直接next就行,生成项目后,点击运行,顺利的话会出现这个cocos经典画面
但是我就不幸运,当然可能是环境问题或者添加cocos模板时文件没有修改好,我点击运行后会出现下面的错误
可以看出是项目在路径下找不到相关头文件,经查资料和实践,我在项目右击->属性->c/c++->附加包含目录中添加如下内容
.;E:\cocos2d-2.1rc0-x-2.1.3\external;..\Classes;E:\cocos2d-2.1rc0-x-2.1.3\cocos2dx;E:\cocos2d-2.1rc0-x-2.1.3\cocos2dx\kazmath\include;E:\cocos2d-2.1rc0-x-2.1.3\cocos2dx\include;E:\cocos2d-2.1rc0-x-2.1.3\cocos2dx\platform;E:\cocos2d-2.1rc0-x-2.1.3\cocos2dx\platform\win32;E:\cocos2d-2.1rc0-x-2.1.3\cocos2dx\platform\third_party\win32\OGLES;E:\cocos2d-2.1rc0-x-2.1.3\CocosDenshion\include;%(AdditionalIncludeDirectories)
E:\cocos2d-2.1rc0-x-2.1.3是我的cocos目录
如此设置后以上问题没有了,但是还有新问题
又查资料,缺少一些库文件,运行cocos自带的win32项目会生成好多lib的库和dll库 ,复制过来到新建项目的Debug.win32目录下,当然不用全复制,我复制的库如下图
这样就可以了,最少我再往后没有遇到其他问题,到此,win32下用vs开发的环境就搭建好了
至于android平台的移植,按照第3步,搭建android环境,下载ndk,这些都不在这里细说,网上有很多详细教程,安装cygwin的教程网上也有,我只说我遇到的问题:点击cocos目录下create-android-project.bat就能创建一个android项目,用cygwin切入到生成的jni文件夹中执行./native_build.sh,即可对项目进行编译,我的问题是编译后没有生成classpath文件和project文件,src/org/cocos2d下没有相应的java文件,解决办法:到E:\cocos2d-2.1rc0-x-2.1.3\cocos2dx\platform\android\java下把缺少的东西直接考过来就行
这篇介绍的较简单,主要是能在网上找到详细介绍的这里都省略,我着重说一下我自己遇到的困难,再者,虽然好多问题解决了,但我还是不了解根本原因,即对于整个cocos的跨平台运行机制还没有深入了解,cocos与各个平台的交互也没有明白,只是简单的把问题解决了,暂时能进行开发了而已,希望能在以后开发过程中有更深度的了解,现在先不追究了,因为没有这个本事啊,如果有大神看到这,希望一定不吝赐教