不得不感叹下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环境下如何实现与Android平台的交互,即Cocos2dx与Android间如何互调。Cocos2dx是一个开源的游戏开发引擎,它提供了多种编程语言的接口,其中C++是其主要支持语言。而Android平台上的...
在Android项目中嵌入Cocos2dx项目是一个常见的需求,特别是在开发混合式游戏或应用时。Cocos2dx是一款高效的游戏开发框架,它基于C++,同时提供了Java、Objective-C和Swift的接口,使得开发者可以方便地在Android和...
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 ...
2. 配置环境变量:确保你的系统路径中包含了Android SDK和NDK的路径,这样命令行工具可以访问它们。 **第二步:设置Cocos2d-x** 1. 获取Cocos2d-x源码:从Cocos2d-x官方网站或者GitHub仓库下载最新版本的源码,并...
cocos2dx 编译到 android cocos2dx 是一个跨平台的游戏引擎,它支持多种平台,包括 Android、iOS、Windows 等。为了将 cocos2dx 编译到 Android 平台,需要进行以下步骤: 首先,需要安装 Eclipse、SDK 和 NDK。...
cocos2dx编译运行环境变量设置脚本,使用需要注意将脚本放在cocos/android_sdk/ndk/ant相关目录的同级目录,并且需要修改脚本中对应资源的文件名
在Cocos2dx 2.x版本中播放MP4格式的视频文件是一项常见的需求,尤其是在开发游戏或者多媒体应用时。Cocos2dx是一个基于C++的游戏开发框架,它提供了丰富的功能来帮助开发者创建2D和3D游戏。在这个场景中,我们将深入...
Cocos2dx的Java层通常会继承自`org.cocos2dx.lib.Cocos2dxActivity`,这个基类已经实现了大部分Android Activity的生命周期回调,如`onCreate()`, `onResume()`等,开发者可以根据需要覆盖这些方法。 - **资源管理*...
通过这样的示例,你可以学习如何在Windows环境下构建和运行Android游戏,了解cocos2dx在不同平台上的兼容性和调试技巧。 总的来说,cocos2dx提供的源码和Android工程创建能力,使得开发者能够轻松地进行跨平台游戏...
Cocos2dx是一个广泛使用的开源游戏开发框架,基于C++,支持跨平台的游戏开发,适用于iOS、Android、Windows等多个平台。在Cocos2dx的生态系统中,有一系列强大的辅助工具,大大提升了开发效率,其中CocosBuilder就是...
下面将详细介绍如何在Cocos2dx环境下实现文件MD5校验的代码及其使用方法。 首先,`MD5ChecksumDefines.cpp` 和 `MD5ChecksumDefines.h` 文件可能包含了用于计算MD5校验和的相关定义和宏。例如,它们可能包含了计算...
在iOS开发中,Cocos2dx是一个广泛使用的游戏开发框架,它允许开发者创建跨平台的2D和3D游戏。然而,随着Apple对App Store审核政策的调整,使用UIWebView的App将不再被接受,因为Apple已经将其列为弃用API。在2020年...
《基于Cocos2dx的游戏开发实例解析》 Cocos2dx是一个开源的游戏开发框架,它基于C++,并提供对多种编程语言的支持,包括Lua和JavaScript。本实例以"基于cocos2dx的一个小例子"为主题,展示了如何利用Cocos2dx进行...
在Cocos2dx 3.x版本中,框架进行了诸多优化和改进,提高了性能,简化了API,使得开发者能够更高效地创建2D游戏。这本书将带你深入理解Cocos2dx 3.x的核心概念,包括场景(Scene)、层(Layer)、节点(Node)、精灵...
在游戏开发领域,Cocos2dx是一款广泛使用的开源游戏引擎,它基于C++,并提供了对多种平台的支持,包括iOS。本资源包含了斗地主游戏的服务端和客户端代码,这为我们提供了一个深入理解如何构建一款跨平台游戏的机会。...
在Android平台上开发Cocos2dx游戏时,经常会遇到字符编码问题,特别是在处理中文字符时。"iconv cocos2dx android 库"就是为了解决这个问题而存在的,它提供了一个跨平台的字符编码转换工具,使得在UTF-8和GBK之间...
在开始配置之前,你需要确保已经按照`README.txt`的说明正确设置你的环境变量,包括Cocos2dx的安装路径和Lua解释器的路径。这些配置对于`run.py`的正确执行至关重要。`README.txt`通常会详细说明如何修改这些路径,...
在 Android 项目中添加 libcocos2dx 依赖模板,首先需要在 `File` 菜单中选择 `New` > `Import Module`,然后选择 CocosCreator 项目中的 `cocos2d-x\cocos\platform\android\java` 目录下的 `libcocos2dx` 模板。...
在Android平台上集成Cocos2dx与Protobuf,可以实现高效的数据交换和序列化,提升游戏性能。 首先,让我们详细了解一下如何在Cocos2dx项目中集成protobuf。这通常包括以下几个步骤: 1. **下载与安装protobuf**:你...
“cocos2dx 2048”是一个基于cocos2dx框架开发的流行数字拼图游戏,它仿照了2048游戏的玩法,通过编程技术将2D图形、动画和逻辑控制融合在一起,为玩家提供了趣味且富有挑战性的游戏体验。cocos2dx是一款开源的游戏...