您的位置:首页 > 编程语言 > C语言/C++

第四节hellocpp整体框架(三)

2013-11-14 12:57 260 查看
第四节hellocpp整体框架(三)

继续分析,这节讲一下简单架构:

分析src\org\cocos2dx\lib 目录下的java 文件:

想要显示一个目录下的所有文件,输出为文本信息,使用TREE path /F 命令

这个目录下的文件为:

Cocos2dxAccelerometer.java

Cocos2dxActivity.java

Cocos2dxBitmap.java

Cocos2dxEditBoxDialog.java

Cocos2dxEditText.java

Cocos2dxETCLoader.java

Cocos2dxGLSurfaceView.java

Cocos2dxHandler.java

Cocos2dxHelper.java

Cocos2dxLocalStorage.java

Cocos2dxMusic.java

Cocos2dxRenderer.java

Cocos2dxSound.java

Cocos2dxTextInputWraper.java

Cocos2dxTypefaces.java

这一节只是粗略的说下各个文件,因为相对来说,代码量不大,且很容易看懂。

我们来看Cocos2dxHelper.java 文件:

Cocos2dxHelper.sCocos2dxAccelerometer = new Cocos2dxAccelerometerCocos2dxAccelerometer(pContext);

Cocos2dxHelper.sCocos2dMusic = new Cocos2dxMusic(pContext);

Cocos2dxHelper.sCocos2dSound = new Cocos2dxSound(pContext);

里面关联了三个,这三个的目的为,第一个为屏幕方向关注,第二个为播放长时间的声音,第三个为

播放短暂的比如爆炸声的一个类。

然后在这个文件,看到了很多static 方法,这些方法是提供给c++调用的。

具体代码为\cocos2d-x-2.1.4\cocos2dx\platform\android\jni 下面的

Java_org_cocos2dx_lib_Cocos2dxHelper.cpp 文件。

我们看一个获取包名的方法:

getPackageNameJNI

代码为:

if (JniHelper::getStaticMethodInfo(t, CLASS_NAME, "getCocos2dxPackageName",

"()Ljava/lang/String;")) {

jstring str = (jstring)t.env->CallStaticObjectMethod(t.classID, t.methodID);

t.env->DeleteLocalRef(t.classID);

ret = JniHelper::jstring2string(str);

t.env->DeleteLocalRef(str);

}

这种方法的方式为:从jvm 获取到java 类的方法地址,然后调用方法,得到结果,释放调用引用。

Cocos2dxAccelerometer.java 屏幕方向相关

Cocos2dxActivity.java activity 相关

Cocos2dxBitmap.java ***位图类

Cocos2dxEditBoxDialog.java 显示编辑框

Cocos2dxEditText.java 显示编辑框

Cocos2dxETCLoader.java 绘制纹理

Cocos2dxGLSurfaceView.java 这个为主要的view,也只需要这个即可。

Cocos2dxHandler.java 存在于主线程的handle,处理其他线程传来的数据

Cocos2dxHelper.java 上层帮助类,作为桥梁提供c++调用

Cocos2dxLocalStorage.java 本地存储

Cocos2dxMusic.java 播放音乐

Cocos2dxRenderer.java 渲染器

Cocos2dxSound.java 播放短暂音

Cocos2dxTextInputWraper.java 还没看清楚是什么

Cocos2dxTypefaces.java 获取自定义字库

如此看来,万事俱备了。有了消息传递,有了触屏和按键响应,有了播放声音和存储数据,应该

已经具备了游戏的元素了。加入C++里面的cocos2dx 引擎,

游戏的架构方式显而易见了。

上层保持和android 的沟通,然后渲染是在c++里面,有消息或者按键触屏,上层传给c++。c++

需要上层时借助help 类即可以实现通讯。如此组成了cocos2dx 的android 架构。

随后开发都是围绕c++来进行的,上层android java 代码基本不需要修改,只有自己需要扩充时

才需要修改。

引擎整体原理为:

android java 维护框架消息传递,中断,暂停这些处理,所有的处理都传给C++,让这边来响

应即可。需要退出直接调用退出导演类即可实现。

这节就到此处,后面需要开始分析c++引擎机制,有些庞大,因此需要一些时间。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: