【COCOS2DX-游戏开发之六】App各平台启动流程
2013-06-12 22:22
375 查看
coco2d-x称之为跨平台,但它跟Java的跨平台是两个概念。与其说是跨平台,不如说是各平台对Opengl ES的支持。如果平台不支持Opengl ES,我真不知道怎么来移植了。
cocos2d-x在各平台的实现代码完全一致,你的工程只需要针对各平台做些配置工作即可,这点cocos2d-x的源码通过脚本都做好了。
cocos2d-x是怎么跟各个平台入口联系起来的呢,我仔细看了下代码,分享一下。
IOS:(xcode4.3.2,cocos2d-x2.0.1)看源码自带的HelloWorld例子。结构如下:
其中iOS组下的代码就是ios平台的相关代码。代码结构和平台相关代码在建工程时会自动创建。
入口是main函数,其中加载AppController,这个类完成了ios平台的环境初始化。大部分代码都是ios平台的代码,与cocos2d-x相关的只有两句:
[html] view
plaincopy
static AppDelegate s_sharedApplication;
cocos2d::CCApplication::sharedApplication().run();
CCApplication是一个单例的类,而sharedApplication是其全局访问方法,获得其实例。AppDelegate私有继承CCApplication类,隐藏接口。
AppController.mm一开始定义一个static的AppDelegate就是要定义一个CCApplication的实例,然后调用run函数,看这个函数
[html] view
plaincopy
int CCApplication::run()
{
if (applicationDidFinishLaunching())
{
[[CCDirectorCaller sharedDirectorCaller] startMainLoop];
}
return 0;
}
调用applicationDidFinishLaunching()函数,这个由AppDelegate实现,从此程序进入coco2d-x引擎部分,后续就与平台无关了,都是c++实现。
Android:安卓部分比较简单,就是Java通过Jni调用C++实现。
通过cocos2d-x的源码目录下的脚本create-android-project.sh可以创建android工程,创建完成后会生成Android平台相关的Java层的代码,其实就是拷贝的cocos2dx/platform/android/java目录下的代码。看下源码自带tests工程的结构:
程序入口是TestsDemo,这是启动Activity,继承自Cocos2dxActivity。通过调用Opengl ES在android上的java接口来启用Opengl。就是上图中的Cocos2dxGLSurfaceView.java,这个类继承自GLSurfaceView,是Opengl的上层接口类。在android上,opengl的绘图是通过单独的线程来渲染的,必须实现一个渲染器Renderer,cocos2d-x中的渲染器就是Cocos2dxRenderer.java。在这个类中有一系列的native函数,如nativeInit、nativeTouchesBegin等,这些函数就是cocos2d-x的C++代码对Java层的接口函数。其中nativeInit是工程自带的Jni目录下的main.cpp通过Jni封装的,而其他的native函数是cocos2dx/platform/android/Jni下的封装,就是引擎已经封装好了。
cocos2d-x中,一个完整的android游戏分两部分,cocos2d-x库和Java部分,说白了就是C++部分和Java部分,默认的Java部分是固定好了的,一般不需要自己再修改,跟编译一般的android应用一样,用Eclipse就可以。C++部分就是用cocos2d-x实现游戏的部分,这部分需要用NDK来编译成动态链接库。C++部分跟ios下的C++部分完全一样。
在android开发平台上调试cocos2d-x的代码不太方便,因为NDK本身的调试就不方便,所以建议还是在mac或windows上做开发,再移植。
cocos2d-x在各平台的实现代码完全一致,你的工程只需要针对各平台做些配置工作即可,这点cocos2d-x的源码通过脚本都做好了。
cocos2d-x是怎么跟各个平台入口联系起来的呢,我仔细看了下代码,分享一下。
IOS:(xcode4.3.2,cocos2d-x2.0.1)看源码自带的HelloWorld例子。结构如下:
其中iOS组下的代码就是ios平台的相关代码。代码结构和平台相关代码在建工程时会自动创建。
入口是main函数,其中加载AppController,这个类完成了ios平台的环境初始化。大部分代码都是ios平台的代码,与cocos2d-x相关的只有两句:
[html] view
plaincopy
static AppDelegate s_sharedApplication;
cocos2d::CCApplication::sharedApplication().run();
CCApplication是一个单例的类,而sharedApplication是其全局访问方法,获得其实例。AppDelegate私有继承CCApplication类,隐藏接口。
AppController.mm一开始定义一个static的AppDelegate就是要定义一个CCApplication的实例,然后调用run函数,看这个函数
[html] view
plaincopy
int CCApplication::run()
{
if (applicationDidFinishLaunching())
{
[[CCDirectorCaller sharedDirectorCaller] startMainLoop];
}
return 0;
}
调用applicationDidFinishLaunching()函数,这个由AppDelegate实现,从此程序进入coco2d-x引擎部分,后续就与平台无关了,都是c++实现。
Android:安卓部分比较简单,就是Java通过Jni调用C++实现。
通过cocos2d-x的源码目录下的脚本create-android-project.sh可以创建android工程,创建完成后会生成Android平台相关的Java层的代码,其实就是拷贝的cocos2dx/platform/android/java目录下的代码。看下源码自带tests工程的结构:
程序入口是TestsDemo,这是启动Activity,继承自Cocos2dxActivity。通过调用Opengl ES在android上的java接口来启用Opengl。就是上图中的Cocos2dxGLSurfaceView.java,这个类继承自GLSurfaceView,是Opengl的上层接口类。在android上,opengl的绘图是通过单独的线程来渲染的,必须实现一个渲染器Renderer,cocos2d-x中的渲染器就是Cocos2dxRenderer.java。在这个类中有一系列的native函数,如nativeInit、nativeTouchesBegin等,这些函数就是cocos2d-x的C++代码对Java层的接口函数。其中nativeInit是工程自带的Jni目录下的main.cpp通过Jni封装的,而其他的native函数是cocos2dx/platform/android/Jni下的封装,就是引擎已经封装好了。
cocos2d-x中,一个完整的android游戏分两部分,cocos2d-x库和Java部分,说白了就是C++部分和Java部分,默认的Java部分是固定好了的,一般不需要自己再修改,跟编译一般的android应用一样,用Eclipse就可以。C++部分就是用cocos2d-x实现游戏的部分,这部分需要用NDK来编译成动态链接库。C++部分跟ios下的C++部分完全一样。
在android开发平台上调试cocos2d-x的代码不太方便,因为NDK本身的调试就不方便,所以建议还是在mac或windows上做开发,再移植。
相关文章推荐
- BPM开发平台在表单中启动其它流程的方法|工作流引擎|BPM|JBPM|流程管理
- 深入浅出 - Android系统移植与平台开发(四)- Android启动流程
- 游戏直播App平台定制开发|广州明智科技App公司
- 移动电玩城软件手机游戏APP开发街机捕鱼网络平台地方捕鱼游戏运营新时代产物
- 【COCOS2DX-游戏开发之七】添加启动数字输入法的功能
- 使用CoCos2dx-3.4开发一套可以商用的跑酷游戏 之一 Win8平台的Cocos2dx环境搭建与知识预备
- 深入浅出 - Android系统移植与平台开发(四)- Android启动流程
- 【BPM开发平台】表单中启动其它流程的方法_工作流引擎_流程管理
- HTML5游戏开发/微信游戏开发——Cocos2dx-js开发环境搭建(win32平台)
- cocos2dx3.3开发FlappyBird总结七:说说游戏流程
- 深入浅出 - Android系统移植与平台开发(四)- Android启动流程
- android高级程序开发-app启动流程
- 【COCOS2DX-游戏开发之一】App数据保存目录
- 深入浅出 - Android系统移植与平台开发(四)- Android启动流程
- 深入浅出 - Android系统移植与平台开发(四)- Android启动流程
- iPhone开发进阶 app启动流程
- iOS开发 -- "AppDelegate.m"文件 程序启动流程
- 深入浅出 - Android系统移植与平台开发(四)- Android启动流程
- 【COCOS2DX-ANDROID-游戏开发之十二】Android平台第三方应用分享到微信开发
- iPhone开发进阶 app启动流程