永发信息网

java 在cocos2dx中需怎么引入

答案:1  悬赏:80  手机版
解决时间 2021-11-26 05:35
java 在cocos2dx中需怎么引入
最佳答案
要完成在cocos2dx的场景上一个点击事件,传递一个消息到java层,下面让我们看看如何完成它。
包括
你需要在你的项目中添加以下引用,原作者已经建立了一个在线项目。请确保在你的项目中包含文件了c++和Java,这里有个链接你可以查看一下:EasyNDK
C++ 层面:
[cpp] view plaincopy
#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层面代码:

[cpp] view plaincopy

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);
}

为了跟其他JavaSDK相连接,比如微博SDK,FaceBook SDK等,你可以按照这些sdk的java指导说明,实现这些消息,并传递接口到cocos2dx层面调用,使之成为你自己的SDK。在cocos2dx中。我已经通过这种方法实现了APPCircle,Flurry和很多其他的SDK。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
都说北方的水质硬,水质硬和软是什么概念?哪
在祖坟里坟墓埋错了位置能原地重新埋吗?谢谢
哦对了十香的三代苹果是什么意思
求灿白文!!
一单一双压过双眼皮后为什么看着不一样
米兰园南门地址有知道的么?有点事想过去
我的虾享靠谱吗 实力强大放心可靠
人体大量出汗对人体有何害处?
tp电力猫400v4。7uf电容烧坏了,是什么引起的
为什么每次投票选举我的票数都很低!?:?
QQ滔滔怎么开通???
5175÷207+102×9怎样用梯等式做?
铜钱什么时候的值钱
HTML问题:为什么img标签对中margin和padding
汝州农商银行电话,汝州农商银行电话多少
推荐资讯
什么食物碳排放高
100与78化成最简
各种花的花语跟背后的故事(每种花最好带图片
吃饭结账英语用哪个单词
炖驴肉的做法
外婆给我一个小小橄榄 哦又涩又酸 谁唱的
为什么智商高如你,还未走上人生巅峰
op_date=$g_time Shell里什么意思,
1996年到2016年工资涨几倍
ACCESS如何统计每年出版的图书数量,表中有图
贝亲贝美专业儿童摄影地址好找么,我有些事要
很辛苦要怎么样安慰他
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?