Cocos2dx android 部分代码的理解
一、概述
基本上是搭建了基本的android app的架子,并对一些系统相关的功能进行了封装
二、java部分的细节
1、入口是 Cocos2dxActivity = Cocos2dxHelper + Cocos2dxGLSurfaceView
2、Cocos2dxHelper 封装系统相关的功能(声音、音效、资源、目录、压缩纹理、传感器、本地存储、文本渲染),基本上是android c++部分的java实现
3、Cocos2dxGLSurfaceView 本身属于android的view体系,内部封装了opengles的渲染环境,会把键盘、触摸、传感器、等各种事件传给renderer,也会处理textview的逻辑
4、Cocos2dxRenderer 是真正的渲染线程的逻辑,会把opengl初始化、帧渲染、系统事件等回调给native的c++
三、c++部分的细节
第一部分:jni相关(platform/android/jni目录下)
1、JniHelper 主要是将c++与jvm之间进行交互的操作进行了抽象
2、java回调c++的函数符合jni的标准,以 Java_org_cocos2dx_lib_Cocos2dxHelper_XX 的方式来作为函数名
3、c++调用java的部分以jni打头
4、Java_org_cocos2dx_lib_Cocos2dxHelper.cpp 里面基本上统一写了c++调用java的代码,并实现了java需要的2个回调
5、IMEJni.cpp 主要是打开和关闭IME(软键盘)
6、DPIJni.cpp 取得android中屏幕的dpi
7、TouchesJni.cpp 将java的touch事件传给c++
8、Java_org_cocos2dx_lib_Cocos2dxRenderer.cpp 实现主循环
9、Java_org_cocos2dx_lib_Cocos2dxAccelerater.cpp 传感器的回调,传递给c++
10、Java_org_cocos2dx_lib_Cocos2dxBitmap.cpp 调用了java中对应文件的功能
第二部分:实现c++跨平台的接口的部分(platform/android目录下)
1、CCDtdC.h 标准c头文件
2、CCPlatformDefine.h 定义了一个有用的宏 CC_ASSERT
3、CCImage.cpp 和java部分的image一起实现了文字的渲染
4、CCFileUtilsAndroid.cpp android平台的文件操作实现,isFileExist 相对路径从assets中找,绝对路径直接在os中找;读文件也是分2种情况;getWritablePath是
files目录,比如 /data/data/com.xx.yy/files, source dir 是安装包的位置,比如 /data/app/com.xx.yy-2.apk
5、CCEGLView opengl的扩展功能
6、CCCommon.cpp 主要是提供了ndk log和 本地对话框的功能 CCLog、CCMessageBox
7、CCApplication 提供了设置renderer帧率、获得当前系统的语言 的接口
8、CCAccelerometer 将jni的部分封装到c++中
四、总结
区分了java、jni、平台相关c++、跨平台c++等几个层次,使整个的实现思路非常清晰
相关推荐
如果你想用cocos2d开发android游戏,但是又不方便找包,这里就可以为你提供cocos2d开发的所有相关包,解压后得到libs文件夹即可。
cocos2d-x游戏代码
cocos2d-android游戏引擎是著名游戏引擎cocos2d游戏引擎的Android版。cocos2d-android游戏引擎性能优越、易学、可以进行纯java编程、具有极高的研 究价值、大大的降低了开发者的学习成本。您只需要一台普通配置的...
cocos2d-android 游戏引擎,文档介绍详细,各种使用 cocos2d-android 游戏引擎,文档介绍详细,各种使用 cocos2d-android 游戏引擎,文档介绍详细,各种使用
cocos2d-android 基础代码
x实战:JS卷——Cocos2d-JS开发内容简介:本书是介绍Cocos2d-x游戏编程和开发技术书籍,介绍了使用Cocos2d-JS中核心类、瓦片地图、物理引擎、音乐音效、数据持久化、网络通信、性能优化、多平台发布、程序代码管理、...
Cocos2d Android的小游戏打飞机
为cocos2d-android的android游戏开放引擎jar包 支持tiled Map地图的导入
cocos2d-android
适合新接触cocos2d的朋友们, 一套比较全的益智游戏,图片啥的都不错,下载看看吧,都会受益的
cocos2d android-1 Java 代码编写
让安卓设备简单使用cocos2d做游戏开发的工具类,基于cocos2d的C语言版本开发,这个工程可以直接作为library导入项目
cocos2d入门 cocos2d入门 cocos2d入门 cocos2d入门 cocos2d入门 cocos2d入门
Cocos2d-x jar文件 放入assets文件中,即可引入工程
cocos2D-x官网源代码,绝对没有任何病毒,请放心使用,谢谢合作!
Android Cocos2d-x 环境配置 1.开发环境 2.安装步骤 2.1.安装JDK 2.2.安装android sdk 2.3.安装NDK 2.4.项目转换 2.5.Eclipse导入生成的Hello World Android项目 2.6.Eclipse导入生成的TestCpp Android项目 2.7转换...
使用了Cocos2d-android-1引擎。 在写代码时,误将MonkeyKing写成了moneyKing(包名里) 第一版程序下载 http://pan.baidu.com/s/1o6lWW2m 第二版程序下载 http://pan.baidu.com/s/1dDHxwop 第三版程序下载 ...