本文由qinning199原创,转载请注明:http://www.cocos2dx.net/?p=97
本文目的
要完成在cocos2dx的场景上一个点击事件,传递一个消息到java层,下面让我们看看如何完成它。
包括
你需要在你的项目中添加以下引用,原作者已经建立了一个在线项目。请确保在你的项目中包含文件了c++和Java,这里有个链接你可以查看一下:EasyNDK
C++ 层面:
01 | #include "NDKHelper.h" |
04 | void HelloWorld::menuCloseCallback(CCObject* pSender) |
08 | NDKHelper::AddSelector("HelloWorldSelectors", |
10 | callfuncND_selector(HelloWorld::SampleSelector), |
15 | CCDictionary* prms = CCDictionary::create(); |
16 | prms->setObject(CCString::create("SampleSelector"), "to_be_called"); |
19 | SendMessageWithParams(string("SampleSelector"), prms); |
23 | void HelloWorld::SampleSelector(CCNode *sender, void *data) |
25 | CCLog("Called from native environment"); |
29 | HelloWorld::~HelloWorld() |
32 | NDKHelper::RemoveSelectorsInGroup("HelloWorldSelectors"); |
Java层面代码:
02 | public void onCreate(Bundle savedInstanceState) |
04 | super.onCreate(savedInstanceState); |
07 | AndroidNDKHelper.SetNDKReciever(this); |
13 | public void SampleSelector(JSONObject prms) |
15 | Log.v("SampleSelector", "传过来的参数是 : " + prms.toString()); |
17 | String CPPFunctionToBeCalled = null; |
20 | CPPFunctionToBeCalled = prms.getString("to_be_called"); |
22 | catch (JSONException e) |
28 | AlertDialog.Builder builder = new AlertDialog.Builder(this); |
29 | builder.setMessage("这是一个android层中的popup"). |
30 | setTitle("Hello World!"). |
31 | setNeutralButton("OK", null).show(); |
34 | AndroidNDKHelper.SendMessageWithParameters(CPPFunctionToBeCalled, null); |
记录
为了跟其他JavaSDK相连接,比如微博SDK,FaceBook SDK等,你可以按照这些sdk的java指导说明,实现这些消息,并传递接口到cocos2dx层面调用,使之成为你自己的SDK。在cocos2dx中。我已经通过这种方法实现了APPCircle,Flurry和很多其他的SDK。
网上也有完整的源代码样例工程,下面是链接:
Sample Android Project