不得不感叹下COCOS2DX的强大。。同一份游戏代码不加改动的可以放到android和iphone上面。
而最近在往ANDROID上放的时候,需要集成其它非官方运营渠道的API,而对方提供的API是jar包。所以需要在cocos2dx C++源文件中调用JAVA的API,因此有了以下DEMO代码:
activity里有如下定义:
public void cppCall_nonStatic_logsth(){
//非静态方法
Log.i("cppCall_nonStatic", "test2~~~~!!!");
}
public static Object cppCall_logsth(){
//静态方法
Log.i("cppCall", "test~~~~!!!");
return activity;
}
AppDelegate.cpp里:
加上预定义(for android)
#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
#include <jni.h>
#include <JniHelper.h>
#include <android/log.h>
#if 1
#define LOG_TAG "JniHelper"
#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG,LOG_TAG,__VA_ARGS__)
#else
#define LOGD(...)
#endif
#endif
关键代码片段:
JniMethodInfo minfo;
jobject jobj;
bool b = JniHelper::getStaticMethodInfo(minfo,
"com/loy/puzzles/Puzzles", //类路径
"cppCall_logsth", //静态方法名
"()Ljava/lang/Object;"); //括号里的是参数,后面的是返回值。
if (!b) {
LOGD("JniHelper::getStaticMethodInfo error...");
}else{
jobj = minfo.env->CallStaticObjectMethod(minfo.classID, minfo.methodID);
}
JniHelper::getMethodInfo(minfo,
"com/loy/puzzles/Puzzles",
"cppCall_nonStatic_logsth",
"()V");
if(!b){
LOGD("JniHelper::getMethodInfo error...");
}else{
LOGD("ready to invoke method...");
minfo.env->CallVoidMethod(jobj, minfo.methodID);
}
最终LOGCAT打印日志如下:
12-29 12:46:33.891: D/JniHelper(2008): testing~~~
12-29 12:46:33.891: I/cppCall(2008): test~~~~!!!
12-29 12:46:33.891: D/JniHelper(2008): ready to invoke method...
12-29 12:46:33.891: I/cppCall_nonStatic(2008): test2~~~~!!!
12-29 12:46:33.891: D/JniHelper(2008): testing over~~~
即表示调用成功。
分享到:
相关推荐
cocos2dx 2.x 开发示例游戏合集 效果展示: https://github.com/pdpdds/cocos2dx-dev/blob/master/img/snap0215.jpg https://github.com/pdpdds/cocos2dx-dev/blob/master/img/snap0216.jpg ...
Android和Cocos2dx间互调的方法,C++调用Java弹窗,迁移等
将Cocos2dx从win32移植到android平台 不用cygwin 只要简单的几步就可轻松搞定
cocos2dx编译运行环境变量设置脚本,使用需要注意将脚本放在cocos/android_sdk/ndk/ant相关目录的同级目录,并且需要修改脚本中对应资源的文件名
使用cocos2dx新建的helloword工程,嵌入到android原生项目中的demo
基于cocos2dx3.2的ScrollView改良版,...由于cocos库太大,压缩包里已经移除cocos核心库,需要自行下载安装cocos2dx 3.2版本,并任意生成一个cocos2dx项目,把里面的cocos文件夹复制到ScrollViewDemo文件夹下即可。
该问题的解决方案有两种:1)升级Cocos2dx的版本,在查看Cocoas官网及Cocoas论坛,cocoas在4.0修复了这个问题,如果可以更新到4.0以上,建议更新;不想更新的话,可以修改UIWebView为WKWebView。具体的修改方式使用...
cocos2dx 编译到 android
cocos2dx android apk javascript cocos2dx android apk javascript cocos2dx android apk javascript cocos2dx android apk javascript cocos2dx android apk javascript
cocos2dx scrollview优化
其中配置包括了cocos2dx 2.0.4和cocos2dx2.1.3在lua中所有函数,类,类的成员变量和方法以及相关枚举定义 使用方法: 1.打开本目录下LuaKeywords.config,将里面内容复制到LuaStudio的自定义函数配置中 2.拷贝cocos...
中文编码utf和gbk互转的库,可在cocos2dx android游戏用到
cocos2dx android cpp-tests 编译成功的apk文件(debug版) cocos2dx android 基本例子程序 编译成功的apk文件(debug版)
cocos2dx 模糊效果代码提供,尽情下载吧!
cocos2dx中使用精灵的例子,新手可参考。
此代码在cocos2dx2.1.4下面编译有部分错误,我修改后,正常。 下下来后,请在VC++包含目录中链接(F:\cocos2d-x...然后在链接器里附加包含目录加( F:\cocos2d-x-2.1.4\Debug.win32)以免出现libcocos2dx找不到的错误。
cocos2dx android 游戏开发 引擎 分析
cocos2dx_android环境搭建和环境变量配置,挺详细的,相信即便完全没有Android编译环境搭建基础的菜鸟,也可以独立完成!讲述下载和安装哪些工具和插件,及详细的环境变量配置,还有几个可能遇到的问题及解决方案,...
cocos2dx可用3d粒子编辑器,支持pc、mac、iphone、android等平台
cocos2dx斗地主服务端,客户端在我的资源列表中