第四节hellocpp整体框架(三)
发布日期:2021-06-29 15:21:20 浏览次数:3 分类:技术文章

本文共 2178 字,大约阅读时间需要 7 分钟。

第四节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++引擎机制,有些庞大,因此需要一些时间。

转载地址:https://codegg.blog.csdn.net/article/details/16115227 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:第五节cocos2dx的jni部分
下一篇:第三节hellocpp整体框架(二)

发表评论

最新留言

逛到本站,mark一下
[***.202.152.39]2024年04月17日 16时29分49秒