如何制作一个横版格斗过关游戏 Cocos2d-x 2.0.4,本例子是win32的,目前,我使用的cocos2d-x版本为2.1.4,不过,我已用xcode做了移植,demo能正常跑起来。下载链接:
效果图如下:
第零步:配置好android for mac 开发环境,请参考下himi的博文: http://www.himigame.com/iphone-cocos2dx/636.html
本人机子配置环境变量如下:
第一步:建立android工程
#1运行cocos2d-x目录下的create-android-project.sh
#2然后首先输入包名和项目名。
注意有坑!会删除和覆盖你在cocos2d-x安装目录下同名文件夹,如果你建立了一个同名项目(有的话一般是win32的)的话。
输入支持系统版本,android是
向下兼容的。我这里写1,也就是android4.3,然后项目就建立好了,你会发现在cocos2d-x安装目录下,多了个Test文件夹
第二步:导入代码和资源
#1打开Test
#2我们看到有三个文件夹,其中android就是android项目文件夹
把你ISO项目里的Classes拷贝到当前Classes下(注意删除Classes里面的多余的cpp和h,就是项目自动生成的那些)
把你ISO项目里的Resources拷贝到当前Resources下(注意删除Classes里面的多余资源,就是项目自动生成的那些)
第三步:编辑mk
#1注意有坑!android项目里有一大堆mk,而且不同的教程说的mk位置还不一样!你编辑错误了,是无效的(跟你实际使用的mk也有关系)。在这个例子中,我们使用的是Classes下的mk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := game_shared
LOCAL_MODULE_FILENAME := libgame
LOCAL_SRC_FILES := hellocpp/main.cpp \
../../Classes/AppDelegate.cpp \
../../Classes/HelloWorldScene.cpp \
../../Classes/ActionSprite.cpp \
../../Classes/SimpleDPad.cpp \
../../Classes/GameScene.cpp \
../../Classes/Hero.cpp \
../../Classes/HudLayer.cpp \
../../Classes/Robot.cpp \
../../Classes/GameLayer.cpp
LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../Classes
LOCAL_WHOLE_STATIC_LIBRARIES := cocos2dx_static cocosdenshion_static cocos_extension_static
include $(BUILD_SHARED_LIBRARY)
$(call import-module,CocosDenshion/android) \
$(call import-module,cocos2dx) \
$(call import-module,extensions)
#2要修改的地方如下
LOCAL_SRC_FILES:在这里加入你Classes下的cpp文件
LOCAL_C_INCLUDES:在这里添加你使用的库的h文件,如果有的话
LOCAL_LDLIBS:在这里添加你使用的库的lib文件,如果有的话
注意,第三方库和额外的库都是要自己添加的。默认生成的mk里没那么全。
第四步:运行build_native.sh脚本,编辑so库
#1运行你的终端
#2进入当前Test\android路径下
#3运行build_native.sh脚本
头一次编译会长些,编译完然后你会看到,在android文件夹下面生成了一大堆东西。
第五步:导入到eclipse
#1注意有坑!使用新建android项目下的Create project from existing source,如果你使用的是“导入”有可能无法识别。
#2导入成功,然后就是编译执行了。
其他注意事项:
#1.ISO项目对资源文件大小写很敏感,android也敏感,所以如果出错了,把给你提供资源的人给打一顿
#2.可以直接把IOS项目里的工程文件,以及IOS文件夹复制进来,项目就可以和xcode共用了,当然cocos2d-x也是这么干的
#3.xcode用的是gb码,android用的是utf-8
#4.android的横竖屏问题错乱,在android下把pDirector->setDeviceOrientation(kCCDeviceOrientationLandscapeLeft);
这句用条件编译宏给关掉
#5.ndk编译build_native.sh ,注意.cpp 使用宏文件的问题。若有错,请注释掉。