关于cocos2d-x 和安卓之间的相互调用
最近在研究cocos2d游戏移植安卓需要调用很多方法,所以在研究之中写下它们之间相互调用
首先,cocos2d调用安卓
在一个.h文件中添加头文件
#include <jni.h>
#include "platform\android\jni\JniHelper.h"
JniMethodInfo minfo;//定义Jni函数信息结构体
//getStaticMethodInfo 次函数返回一个bool值表示是否找到此函数
bool isHave = JniHelper::getStaticMethodInfo(minfo, "com/zhangying/jni/applay", "testFunWithStringAndRtn", "(I)V");
com/zhangying/jni/applay参数为调用安卓中的类的全路径;
testFunWithStringAndRtn为类中要调用的方法
(I)V 返回值和传入参数的类型
jobject jobj;
if (!isHave) {
CCLog("不存在");
}
else{
CCLog("存在");
//调用此函数
jobj = minfo.env->CallStaticObjectMethod(minfo.classID, minfo.methodID, this->choiceMoney);
// ReadData::setUserDefaultInt("RECHARGE", this->choiceMoney);
}
完成以上步骤就可以测试cocos2d调用安卓中的代码了
然后安卓调用cocos2d
首先在项目中找到jni中的hellocpp中的main.cpp
在其中加入
#include <android/log.h>
#include "data/ReadData.h"
#define LOG_TAG "main"
#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG,LOG_TAG,__VA_ARGS__)
using namespace cocos2d;
void cocos_android_app_init (JNIEnv* env, jobject thiz) {
LOGD("cocos_android_app_init");
AppDelegate *pAppDelegate = new AppDelegate();
}
一下代码是自己加入的 上面的一些自带的不用修改
extern "C"
{
#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
void Java_com_yiqu_mobilesdk_iap_IAPOrder_callbackMobiles(JNIEnv *env, jobject thiz)
{
CCLog("测试是否进入");
}
#endif
}
注意:
Java_com_yiqu_mobilesdk_iap_IAPOrder_callbackMobiles这个名字不是随便定义的
Java是固定的com.yiqu.mobilesdk.iap是包名 IAPOrder是类名字,callbackMobiles是你要调用的方法名字
这样就写成了这个方法
在你要调用cocos2d的java类中写上要调用的方法名字 写法如下
public native static void callbackMobiles(); 名字随便定义,但是native不能丢掉
然后在该类中直接调用callbackMobiles()
就可以直接进入到CCLog("测试是否进入");中了
哈哈 结束了,这是本人正在用的游戏中支付的一块代码调用,运行都正常,如有不好的地方望指出
也可进入群:252799892 大家一起交流
如果感觉对你有帮助给个评价
转载于:https://blog.51cto.com/7535479/1710367
关于cocos2d-x 和安卓之间的相互调用相关推荐
- iOS架构-多工程联编及framework之间的相互调用(19)
对于大公司,大工程来说,业务线很多,也时刻在变,功能模块要求能随时下线,或者业务不再需要了,就需要从主工程中移除相关工程或者库.以减小包的大小.多工程联编是一种多业务合作的一种方法. 有篇文章写的很详 ...
- Python与C之间的相互调用
Python与C之间的相互调用(Python C API及Python ctypes库) 分类: [Python]2010-01-24 17:58 32468人阅读 评论(11) 收藏 举报 pyth ...
- C#与Javascript变量、函数之间的相互调用2008年11月28日 星期五 05:28 P.M.1.如何在JavaScript访问C#函数?
C#与Javascript变量.函数之间的相互调用 2008年11月28日 星期五 05:28 P.M. 1.如何在JavaScript访问C#函数? 2.如何在JavaScript访问C#变量? 3 ...
- js 中meta 移除head_JS函数和winform函数之间的相互调用
1.写一个简单的html页面,用于输入日志,代码如下: <html><head> <meta charset="UTF-8"> <scri ...
- C与C++之间的相互调用(混合编程)
C和C++各自有自身的重要功能,为了能够做到充分利用,避免重复造轮子,有的时候,我们会用到混合编程.然而,我们知道,代码从编写到能执行之前,仍需要经过编译.链接阶段.通常,编译每一个单元文件会生成目标 ...
- 父窗口、子窗口和Silverlight之间的相互调用
啊哈~ 爷爷,爸爸,儿子~ 三代同堂~ 前两天做 silverlight 的东西,主页面打开一个子页面,然后子页面中包含一个 silverlight 应用程序 那难免会涉及到他们三者相互调用的问题 其 ...
- python 函数定义先后是否会影响函数之间的相互调用?(不影响)
# -*- coding: utf-8 -*- """ @File : 201006_测试是否能将被调用函数写在被调用函数之后.py @Time : 2020/1/6 1 ...
- 随想录(ccpp之间的相互调用)
[ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 作为系统工程师,平时用c可能多一些.这两天因为工作的原因,了解了linux上面cpp的编写方法. ...
- Android加载网页JavaScript与Java之间的相互调用
最近项目中涉及到Android中的网络通信与交互.html5等相关内容,由于之前没仔细研究过,在这里总结一下,下面是JavaScript与Java相互调用的一个小例子,废话不多说,直接上代码: < ...
最新文章
- 英国EE:启动TechCity 2.0 首期将部署LTE-Advanced Pro
- C#实现异步消息队列
- dietlibc中的strcpy算法浅析
- 让VC编译的Release版本程序在其他机器上顺利运行
- 发票抬头是什么意思?
- UNIX时间戳及日期的转换与计算
- Eclipse之智能提示 actionscript javascript java开发环境智能提示
- 计算机室 多媒体教室制度,多媒体教室管理、使用制度
- 阿里巴巴是怎么处理大数据的?重磅揭秘!
- Http状态码406(Not Acceptable)
- 百度地图点击出现圆圈
- 优动漫PAINT动画创作功能介绍
- LAMP 技术简介(1)
- 如何实现会议异地实时连线直播
- 老熊的三分地-Oracle、UNIX、数据恢复
- 2011年10月买到Incredible S G11山寨,大家警惕!
- 打印俄文字母表java,?俄语字母表、俄文键盘、傻瓜式读音法、书写法大全【一起学俄语】...
- 代码坏味道与重构之霰弹式修改和依恋情结
- [PPT]用PPT来做2019苹果发布会演示文稿【附源文件下载】
- sshfs真是爽啊!
热门文章
- Tableau 绘制折线图
- 大数据处理框架之Strom:Storm集群环境搭建
- linux进程自动关闭与dmesg的使用
- 怎样向IT行业的朋友说明《圣经》的重要性
- ZigZag Conversion
- Android动画之Frame Animation
- PostgreSql与sqlserver对比杂记
- Android底部菜单栏 仿微博效果
- python book.save_2.3.1. 将二进制数据存为文件:saveBinDataToFile
- 测试功能范围_IT8511+电子负载 OCP?测试功能