第四节hellocpp整体框架(三)

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

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员入门进阶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值