`
eric_weitm
  • 浏览: 242726 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Cocos2dx android 部分代码的理解

 
阅读更多

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

    Box2D是cocos2d-android中的重要组成部分,它是世界上最知名的2D物理引擎之一。Box2D允许开发者创建真实感的物理环境,包括重力、碰撞检测、摩擦力和弹力等。通过Box2D,你可以为游戏中的物体定义物理属性,如质量、...

    cocos2d-android jar包全套.zip

    "cocos2d-android jar包全套.zip"这个压缩包包含了在Android上使用Cocos2d开发游戏所需的所有核心库和依赖。 首先,让我们详细了解一下Cocos2d的主要组件: 1. **Cocos2d Engine**:这是Cocos2d的核心,提供了一...

    Cocos2d Android的小游戏打飞机

    2. **项目创建与结构**:使用Cocos2d-x的命令行工具创建新的Android项目,生成的项目结构包括源代码、资源文件、配置文件等。理解这些文件的作用,例如`cpp`目录下的源码、`proj.android`中的Android Studio项目文件...

    cocos2d-Android项目源码

    通过深入理解和使用cocos2d-Android项目源码,开发者可以更好地掌握游戏开发流程,创建出更具吸引力和高性能的游戏应用。同时,持续关注cocos2d的更新和社区动态,可以及时获取新特性,提升开发效率和游戏质量。

    cocos2D源代码

    这个标题所提及的“cocos2D-x源代码”提供了对框架核心功能的深入理解和自定义优化的机会。源代码的获取通常意味着开发者可以查看、学习、调试甚至修改底层实现,以适应特定项目的需求。 在描述中,我们得到了一个...

    cocos2d-android 基础代码

    Cocos2d-android 是一款基于C++开发的游戏引擎,针对Android平台进行了优化,它提供了丰富...通过深入理解并实践这些基础知识,开发者能够逐渐掌握Cocos2d-android引擎的精髓,从而创作出更具创意和复杂性的游戏作品。

    cocos2d android-1

    3. **Java编程基础**:Cocos2d Android的游戏逻辑主要由Java代码编写。你需要理解面向对象编程的基本概念,如类、对象、继承、多态等。此外,熟悉Android的生命周期管理和组件(如Activity、Service)也是必要的。 ...

    cocos2d-android-1

    "压缩包子文件的文件名称列表:cocos2d-android" 这个列表可能包含了一系列关于Cocos2d-android的教程、示例代码、项目文件以及相关的文档资料。这些资源通常会涵盖以下几个部分: 1. **入门教程**:介绍Cocos2d的...

    cocos2D,Android游戏开发引擎

    总的来说,Cocos2D是Android游戏开发中的强大工具,它提供了丰富的2D功能以及部分3D支持,使开发者能够高效地构建各种类型的游戏。无论是初学者还是经验丰富的游戏开发者,都能从中受益。通过学习和掌握Cocos2D,你...

    cocos2d-x版本的对对碰代码

    Cocos2d-x是Cocos2d的C++扩展,支持iOS、Android、Windows等多个平台,使用C++和Lua两种语言进行开发,具有性能优秀、易于学习和使用的特点。 在这款对对碰游戏中,主要涉及以下几个关键知识点: 1. **Cocos2d-x...

    cocos2d-android-1资源:API文档

    阅读API文档是理解Cocos2d-Android-1工作原理的关键。开发者应熟悉各个类的功能,掌握常用方法的使用方式,并了解如何通过继承或组合API来构建自己的游戏逻辑。此外,了解示例代码和教程将有助于快速上手。 四、...

    Cocos2D cowboy源代码

    为了充分利用这些源代码,开发者需要具备Cocos2D框架的基础知识,熟悉Android和iOS的开发环境,并且能够阅读和理解源代码中的逻辑。通过学习和研究这个项目,开发者可以加深对Cocos2D的理解,提高游戏开发技能,甚至...

    知易cocos2d源代码

    【知易cocos2d源代码】是一套完整的Cocos2D框架源码,专为初学者设计,便于他们入门并学习iPhone游戏开发。...在实际学习过程中,结合教程、示例代码和实践操作,将有助于你更深入地理解Cocos2D,并提升游戏开发技能。

    cocos2d-x 跑酷源码

    本文将深入探讨如何利用cocos2d-x开发一款跑酷游戏,通过分析提供的“runningGame”源码,我们将揭示其核心知识点,帮助初学者快速入门并提升对cocos2d-x的理解。 一、项目结构解析 "runningGame"源码项目通常包含...

    Cocos2d-x实战:C++卷(2版)源代码

    本书以C++语言为主要编程语言,提供了丰富的实践案例和源代码,帮助读者深入理解和掌握Cocos2d-x的使用。 在Cocos2d-x中,C++作为主要的编程语言,相比初版,第二版可能涵盖了更多Cocos2d-x的新特性和优化。C++的...

    cocos2d-master.zip

    - **场景和层管理**:cocos2d-android提供了一套灵活的场景(Scene)和层(Layer)管理机制,开发者可以通过这些组件来组织游戏的各个部分,如主菜单、游戏关卡等。 - **2D渲染**:引擎支持多种图形绘制,包括精灵...

    Cocos2d-Android-1游戏开发

    文件名“cocos2d-master”可能是一个Cocos2d-x的源码仓库,包含了Cocos2d-x的所有源代码和相关资源。开发者可以深入研究源码,理解其内部工作原理,进行自定义修改或扩展,以满足特定项目需求。通常,这个仓库会包含...

    Cocos2d-JS游戏开发

    Cocos2d-JS是一款强大的2D游戏开发...结合书中提供的示例和代码,你将有能力开发出自己的Cocos2d-JS游戏,无论是简单的休闲游戏还是复杂的策略大作,都能得心应手。在游戏开发的道路上,Cocos2d-JS是你不可多得的伴侣。

    cocos2d-x 3.0

    cocos2d-x 3.0是cocos2d-x系列的一个重要升级,它基于C++编写,支持跨平台开发,包括iOS、Android、Windows等多个操作系统。该版本引入了新的渲染系统、性能提升、新的动画系统以及更友好的API,极大地提高了开发...

    cocos2d-x权威指南源代码

    本指南的源代码旨在帮助开发者深入理解cocos2d-x的工作原理,提升游戏开发技能。 cocos2d-x是基于cocos2d的扩展,它用C++编写,同时提供了Lua和JavaScript的绑定,使得开发者可以选择自己熟悉的语言进行游戏逻辑的...

Global site tag (gtag.js) - Google Analytics