本文由qinning199原創,轉載請註明:http://www.cocos2dx.net/?p=97java
本文目的android
要完成在cocos2dx的場景上一個點擊事件,傳遞一個消息到java層,下面讓咱們看看如何完成它。c++
包括git
你須要在你的項目中添加如下引用,原做者已經創建了一個在線項目。請確保在你的項目中包含文件了c++和Java,這裏有個連接你能夠查看一下:EasyNDKgithub
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層面代碼:ui
爲了跟其餘JavaSDK相鏈接,好比微博SDK,FaceBook SDK等,你能夠按照這些sdk的java指導說明,實現這些消息,並傳遞接口到cocos2dx層面調用,使之成爲你本身的SDK。在cocos2dx中。我已經經過這種方法實現了APPCircle,Flurry和不少其餘的SDK。其餘this
網上也有完整的源代碼樣例工程,下面是連接:spa