Cocos2dx的C++和Java的互相调用(EasyNDK)
来源:互联网 发布:淘宝卖的100多充气娃娃 编辑:程序博客网 时间:2024/05/22 13:26
本文由qinning199原创,转载请注明:http://www.cocos2dx.net/?p=97
本文目的
要完成在cocos2dx的场景上一个点击事件,传递一个消息到java层,下面让我们看看如何完成它。
包括
你需要在你的项目中添加以下引用,原作者已经建立了一个在线项目。请确保在你的项目中包含文件了c++和Java,这里有个链接你可以查看一下:EasyNDK
C++ 层面:#include "NDKHelper.h" // 在cocos2dx中的按钮点击方法 void HelloWorld::menuCloseCallback(CCObject* pSender) { //注册一个selector,那么当我们的native环境(java环境)调用这个字符串名字的函数(此处为名字为SampleSelector的函 数)的时候,这个selector可以响应请求 //注意:设置组名是为了在析构函数中能够清除掉selector NDKHelper::AddSelector("HelloWorldSelectors", "SampleSelector", callfuncND_selector(HelloWorld::SampleSelector), this); // 为这个将要传递到native(也就是Java)语言中的消息设置参数 // 在c++中发送要调用的函数名 CCDictionary* prms = CCDictionary::create(); prms->setObject(CCString::create("SampleSelector"), "to_be_called"); // 最后在当前环境(c++)中调用native方法 SendMessageWithParams(string("SampleSelector"), prms);}// 一个回调选择器,native语言(java)将会调用它void HelloWorld::SampleSelector(CCNode *sender, void *data){ CCLog("Called from native environment");}// 析构函数移除掉HelloWorldSelectors中的选择器(selectors)HelloWorld::~HelloWorld(){ // 移除相关联的选择器,因为我们将要销毁当前实例 NDKHelper::RemoveSelectorsInGroup("HelloWorldSelectors");}Java层面代码:
/** 当activity第一次被创建调用*/public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); // 在主activity中,设置这个activity作为c++消息的接受者 AndroidNDKHelper.SetNDKReciever(this);}//实现这个被c++发送消息调用的方法//确保这个方法的名字跟c++传递过来的字符串相同// 比如我们从c++中传递"SampleSelector"字符串,这就是为什么我们创建这个方法的原因了public void SampleSelector(JSONObject prms){ Log.v("SampleSelector", "传过来的参数是 : " + prms.toString()); String CPPFunctionToBeCalled = null; try { CPPFunctionToBeCalled = prms.getString("to_be_called"); } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setMessage("这是一个android层中的popup"). setTitle("Hello World!"). setNeutralButton("OK", null).show(); // 发送带参数的消息,仅仅当selector列表中有这个相同名字的函数,c++才会接受这些消息, AndroidNDKHelper.SendMessageWithParameters(CPPFunctionToBeCalled, null);}
0 0
- Cocos2dx的C++和Java的互相调用(EasyNDK)
- [cocos2dx]在cocos2dx中通过Jni实现Java与C++的互相调用(一)
- [cocos2dx]在cocos2dx中通过Jni实现Java与C++的互相调用(二)
- 关于easyndk的说明
- JNI JAVA与C的互相调用
- C和lua的互相调用
- Lua和C的互相调用
- C和lua的互相调用
- python和C的互相调用
- JavaScript 和 java 的互相调用
- C和C++互相调用 以及 extern "C"的用法
- C和arm的汇编的互相调用
- Android JNI中C和JAVA代码之间的互相调用
- EasyNDK-for-cocos2dx
- C/C++与Java之间的互相调用
- Android Ndk中C与JAVA之间的互相调用
- C和C++之间库的互相调用
- python和C/C++的互相调用 VC
- 桥接表
- ioctl 变成了 unlocked_ioctl
- gnome桌面的美化
- 黑马程序员——Java概述
- 【IOS 开发学习总结-OC-14】★★★objective-c面向对象之——KVO(键值监听)
- Cocos2dx的C++和Java的互相调用(EasyNDK)
- NDK c 文件引用c++ 函数
- SpringMVC中使用Interceptor拦截器
- test
- 测试要点1.0
- 常用的IOS动画效果
- 线性表之顺序表
- 并发下常见的加锁及锁的PHP具体实现
- javascript浏览器匹配