下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

23个步骤完成Android应用的Cocos2D-X开发

作者:课课家教育     来源: http://www.kokojia.com点击数:1316发布时间: 2016-05-08 10:16:10

标签: Cocos2D应用Cocos2D-X开发Cocos2D-X教程

  当我们在学习游戏开发的时候可能都会想我能否用Cocos2d-x开发一个Android应用呢?那么有了想法我们还在等什么?说干就干。下面本篇教程将将为你讲解如何用Cocos2D-X制作的一个Android应用。

Android应用的Cocos2D-X开发

  想必大家都知道,在android上折腾cocos2d-x是比较复杂的,因为你需要用到jni技术,而且还需要通过配置Eclipse来合并java和C++代码,而在你的Xcode上为你的iOS工程合并Objective C和C++是没有问题的。

  与Cocos2d-x和Android相关的教程,绝大部分都是解释如何编译并运行一个纯Cococs2d-x程序(如果兴趣可以参考Cocos2d-x Android tutorial,是Jean-Yves Mengant写的)。

  在本文中,你将会学到如何在你的java版的Android应用中加载不同的Cocos2d-x acttivities。

  我用到的是Cocos2d-x v1,但是我猜Cocos2d-x v2差别也不会太大。

  我是在MacOSX上实践的,但是对于特定的操作系统上只有很少的东西要注意,所以对于其他操作系统也是一样的。

  1.你有一个android(java)工程。在你应用中有一些activities,你想使用Cocos2d-x引擎。

  2.下载 sample project SkeletonCocos2dxApp.zip。在本教程中会从这里复制一些文件。但是你也可以打开它,运行它,甚至查看源码学习,快速了解它是怎么工作的。我还没有测试过,但是你需要在编译同样的工程之前先配置好Eclicpse的C++环境。

  3.对于本教程,你不需要下载最新的Cocos2d-x,因为它已经包含在了本工程中(我是使用的是Cocos2d-X v1/Opengl 1.1)。当你学会了如何讲Cocos2d-x整合到java工程的时候,你可以很容易将cocos2d-x源文件更新为最新的版本。

  下面快速概要一下cocos2d新增的修改:

  -官方的HelloWorld例子中的org.cocos2dx.libs包被修改成可以接受activity中的“BACK"按键事件,并且可以自定义activity中的启动CCScene。

  -AppDelegate.cpp被修改成允许自定义启动CCScene。

  4.下载最新的Android NDK。Cocos2d-x是由C++实现的,NDK的任务就是将C++和java整合到Android应用中去。

  5.解压NDK,将其放任意位置,不过将其放置到android sdk同一个目录是不错的选择。

  6.现在开始修改android工程。将helloworld和helloworldBis Cocos2d-x acitivity添加到工程中。一旦你理解了起工作原理,那么你就可以很容易修改这些activity。

  7.像图片,纹理,声音等文件,必须将其添加到工程的”assets“目录中。

  8.将”org.cocos2dx.lib"添加到工程中。

  9.同样的,将“org.cocos2dx.helloworld"添加到工程中,此时这里有两个Cocos2d-x activity,你可以在以后修改他们的名字。

  10.修改mainfest.xml来声明两个activity。

声明两个activity代码

  11.从相同的工程中,将”jni"复制到你的android工程中。“cocos2dx"和”CocosDenshion"是从官方Cocos2d-x包中复制来的C++源文件。“Classes”包含了Cocos2d-x的CCNodes和游戏的逻辑。“main/main.cpp"中包含了JNI方法,这些方法由Cocos2d-x activity调用,用来定义启动那个CCScene。

  12.什么是JNI?JNI是Java Native Interface的缩写,这是一个Java特性,并不是android特有的。在本教程中你不必知道太多相关知识,但是如果你特别想了解的话,我们就来简单说一下:

  JNI是Java Native Interface的缩写,它提供了若干的API实现了Java和其他语言的通信(主要是C&C++)。从Java1.1开始,JNI标准成为java平台的一部分,它允许Java代码和其他语言写的代码进行交互。JNI一开始是为了本地已编译语言,尤其是C和C++而设计的,但是它并不妨碍你使用其他编程语言,只要调用约定受支持就可以了。使用java与本地已编译的代码交互,通常会丧失平台可移植性。但是,有些情况下这样做是可以接受的,甚至是必须的。例如,使用一些旧的库,与硬件、操作系统进行交互,或者为了提高程序的性能。JNI标准至少要保证本地代码能工作在任何Java 虚拟机环境下。

  接下来我们将演示怎么使用Jni,一起来看下面的步骤吧。

  13.在你的应用中已经有一个HelloWorld的例子,如果你想创建一个适合你自己的Cocos2d-x activity,你可以这样做:

  -创建Cocos2dxActivity java类,复制Cocos2dHelloWorld.java是一个好方法。在这里我们在com.myconpany包中创建了一个Cocos2dxJisawPuzzle.java。

  -在”jni/main/main.cpp"文件中添加如下JNI方法:

  void Java_com_mycompany_Cocos2dxJigsawPuzzle_nativeInit(JNIEnv* env,jobjectthiz,jint w,jint h)

  {

  .......

  }.

  -注意,默认的参数只有我们要创建的OpenGL surface的宽度和高度,但是你可以在JNI中使用更多的参数,例如:

  void Java_com_mycompany_Cocos2dxjigsawPuzzle_nativeInit(JNIEnv* env,jobectthiz,jint w,jint h,jint columnsCount,jint rowsCount)

  {

  ''''''

  }.

  -在“jni/main/main.cpp"文件中添加如下方法:

  void Java_com_mycompany_Cocos2dxJiagsawPuzzle_nativeEnd(JNIEnv* env,jobectthiz)

  {

  CCDirector::shareDirector()->end();

  }。

  此方法是在玩家按下"back"键时关闭Cocos2d-x的运行环境。

  14.在工程的某个地方加载Cocos2d-x activity(例如按下一个按钮时):

  Intent intent=new Intent();

  Intent.setClass(SkeletonActivity.this,Cocos2dHelloWorld.class);

  SkeletonActivity.this.startActivity(intent);

  15.至此,工程的修改已经完成了!现在编译所有这些文件。

  16.从相同的工程中复制build_native.sh文件。编辑并设置正确的值。对于NDK_BOOT,填入你解压NDK的目录即可。APP_ANDROID_ROOT中填入你的android工程目录。

  17.现在我们需要在eclipse中编译他们。

  18.如果还没准备好,那么需要给eclipse安装c++环境。在eclipse的help/install new software中安装CDT C++插件即可。如果不太清楚的话,请参考:setting up eclipse for cocos2d-x development这篇文章。

  19.现在我们需要将工程转换成C++工程。右键工程选择new/other。然后选择c/c++工程,选择C++/makefile project/other toolchain,最后完成。

  20.现在我们需要告知eclipse去运行我们的build_native.sh makefile。右键工程选择属性,选择c/c++ build,不要勾选use default build command,然后在Build command中输入bash${workspace_loc:/SkeletonAPP}/build_native.sh NDK_DEBUG=0 V=1。

  21.现在我们需要在eclipse中修改C++编译中产生的一些错误。右键工程选择属性。选择c/c++ general,path and syb=mbols,GNU C++。然后按add...将目录添加到如下路径中。

  /Library/Android/android-ndk-r8/sources/cxx-stl/gnu-libstdc++/include /Library/Android/android-ndk-r8/platforms/android-8/arch-arm/usr/include /Library/Android/android-ndk-r8/sources/cxx-stl/system/include /Library/Android/android-ndk-r8/sources/cxx-stl/gabi++/include

  22.eclipse对C++并不太友好。所以我们需要注意一些警告和错误。还是在工程属性中,选择c/c++General/Code Analysis并且不勾选任何下拉选项。

  23.现在我们基本上已经完成了。运行工程应该是行的。实际上第一次当然不会成功,但是你是一个开发者哦。

  小结:

  好了,本篇教程到这里就结束了,假如你还有不懂的地方,可以到我们的视频站去学习相关的视频,里面的知识点讲解更为简单明了哦~

赞(0)
踩(0)
分享到:
华为认证网络工程师 HCIE直播课视频教程