第四节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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
逛到本站,mark一下
[***.202.152.39]2024年04月17日 16时29分49秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
猿来绘Java-47- foreatch 增强for循环
2019-04-29
2021/4/27课堂总结和作业
2019-04-29
2021.4.28课堂总结和作业
2019-04-29
2021.4.29课堂总结
2019-04-29
2021.4.30课堂总结和作业
2019-04-29
需要吗?2000GB+学习视频教程 面试资料免费下载
2019-04-29
MySQL对已存在数据库表添加自增ID字段
2019-04-29
idea中的一些常用快捷键
2019-04-29
js校验表单后提交表单的三种方法总结【转载】
2019-04-29
欢迎使用CSDN-markdown编辑器
2019-04-29
a标签中href调用js的几种方法
2019-04-29
jstl标签详解
2019-04-29
Eclipse中使用SVN的使用
2019-04-29
JSON.parse和eval的区别
2019-04-29
JQuery中$.ajax()方法参数详解
2019-04-29
正则表达式的数字实例
2019-04-29
【转】EasyUI 验证
2019-04-29
Django项目实战---搜索引擎Elasticsearch
2019-04-29