cocos2dx 使用jni实现java调用c++
2015-09-07 18:39
746 查看
项目打包android版本时,需要添加监听返回键的事件处理,即:当按下返回键弹出确认对话框,选择是,退出游戏,终止进程。这里需要处理进程的结束以及soket的断开,这就需要用到c++那边的代码,比如Director::getInstance()->end(); pc_client_destroy(my_pomelo_client);等。所以我们需要实现一个方法,用来在java中调用c++。
1.java中方法实现:
例:public class Cocos2dxActivity extends NativeActivity{ ....... public static native void exitGame(); // 这里必须是native函数,因为要链接c++的实现 ....... }
2.c++中方法实现
在*.cpp中extern "C" { JNIEXPORT void JNICALL Java_org_cocos2dx_lua_AppActivity_exitGame(JNIEnv* env, jobject thiz) { Director::getInstance()->end(); } }函数名说明:com_qmx_road2god对应java的包名com.qmx.road2god,Cocos2dxActivity对应类名,exitGame对应函数名。JNIEnv* env, jobject thiz是固定的参数,可以在后面加上自己函数的参数,和java中函数参数保持一致即可。
3.最重要的一步
<img src="http://img.blog.csdn.net/20150907184036567?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />在java中调用exitGame()前加上这一句:static { System.loadLibrary("cocos2dlua"); } //coco2dcpp是编译c++后生成的链接库名,可以在android.mk中看到这样一句话LOCAL_MODULE_FILENAME :=libcocos2dlua,lib后面的名字就是链接库名。例:①②③
相关文章推荐
- Cocos2d-x手动绑定C++类到Lua .
- quick-cocos2d-x基于源码加密打包功能的更新策略(3)
- quick-cocos2d-x基于源码加密打包功能的更新策略(2)
- quick-cocos2d-x基于源码加密打包功能的更新策略(1)
- cocos2d-x 用cocos code IDE 打包android mac
- cocos2d-x如何切换横竖屏
- quick-cocos2d-x源文件编译及加密详解
- Android NDK: jni/Android.mk: Cannot find module with tag 'cocos2dx' in import path解决办法
- cocos2d-x v2 升级到 v3
- COCOS2D-X 3.0坐标系详解
- Cocos2d-X3.0bate_关于一些“无法解析的外部符号”的配置问题解决方法
- Cocos2d-x 3.x版本---创建项目
- cocos2d-x 之quick-ini
- Cocos Studio 数据编辑器新手使用教程
- Cocos Studio 学习指引
- Cocos Studio制作多分辨率UI布局
- COCOS2D-X 多分辨率适配完全解析
- 记录:捕鱼达人开发笔记
- cocos2d-x如何解决图片显示模糊问题
- cocos2dx-3.0 事件回调