cocos2d-x 环境搭建

最近刚刚研究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与各个平台的交互也没有明白,只是简单的把问题解决了,暂时能进行开发了而已,希望能在以后开发过程中有更深度的了解,现在先不追究了,因为没有这个本事啊,如果有大神看到这,希望一定不吝赐教







  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值