Cocos2d 做为一个跨平台的游戏引擎,对于Android中java与C的互相调用很有借鉴意义。本文只分析一下Cocos2d JNI 部分的封装代码。
代码结构
关于多平台的主要目录
- cocos 主要源码
- platform 支持不同平台的项目源码
- android
- ios
- …
- platform 支持不同平台的项目源码
- external cocos依赖的一些第三方开源工具,比如openssl、freetype 等
C++ 调用 java
cocos2d-x引擎对jni的操作进行了封装,提供了一个非常好用的类:JniHelper,定义了一些常用的接口
1 |
|
java 调用C++函数
看过java JNI 的同学应该都了解过了。这里只简单说一下大概流程不做详细赘述了。
- 首先我们会在java 类中定义native函数
private static native void nativeTouchesBegin(final int id, final float x, final float y); - 然后我们在c++ 中定义对应的实现函数。需要注意的是java 类型和C类型的转换。下面展示一下cocos 对触摸事件的封装。凑字数了哈哈。
1 | // TouchesJni.cpp |