cocos2dx C++调用android
2021/4/17 14:26:49
本文主要是介绍cocos2dx C++调用android,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
java部分: 一个类,一个静态方法,一个实例方法
public class AppActivity extends Cocos2dxActivity{ public static Context mContext; //记录类实例 @Override protected void onCreate(Bundle savedInstanceState) { mContext = AppActivity .this; } // c++中調用的方法 public static Object rtnActivity() { System.out.println("----------rtnActivity"); return mContext; } public void showAD() { System.out.println("showAD 成功"); } }
C++部分:
#include "cocos2d.h" //将所有代码包含在预编译块里,防止找不到<jni.h>报错 USING_NS_CC; #include <vector> using namespace std; #include "JniTest.h" #if (CC_TARGET_PLATFORM==CC_PLATFORM_ANDROID) #include <jni.h> //这个文件在ndk中,所以放在预编判断块中,不然编译器找不到这个文件会报错 #include "platform/android/jni/JniHelper.h" JniTest::JniTest() { } JniTest::~JniTest() { } //请求广告 void JniTest::ddcallAd() { //定义Jni函数信息结构体; JniMethodInfo minfo; //返回一个bool值表示是否找到此函数; bool isHave = JniHelper::getStaticMethodInfo (minfo,"org/cocos2dx/lua/MergeAppActivity","rtnActivity", "()Ljava/lang/Object;"); jobject activityObj; if (isHave) { //CallStaticObjectMethod调用java函数,并把返回值赋值给activityObj activityObj = minfo.env->CallStaticObjectMethod(minfo.classID, minfo.methodID); isHave = JniHelper::getMethodInfo( minfo,"org/cocos2dx/lua/MergeAppActivity","showAD","()V"); if (!isHave) { cocos2d::log("jni:showAD 函数不存在;"); } else { //调用displayWebView函数,并传入参数 minfo.env->CallVoidMethod(activityObj, minfo.methodID); } } } #endif
先getStaticMethodInfo找到静态方法,
CallStaticObjectMethod执行静态方法得到类实例,
getMethodInfo再找实例方法,
CallVoidMethod再调用实例方法。
这篇关于cocos2dx C++调用android的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-15PingCAP 黄东旭参与 CCF 秀湖会议,共探开源教育未来
- 2024-05-13PingCAP 戴涛:构建面向未来的金融核心系统
- 2024-05-09flutter3.x_macos桌面os实战
- 2024-05-09Rust中的并发性:Sync 和 Send Traits
- 2024-05-08使用Ollama和OpenWebUI在CPU上玩转Meta Llama3-8B
- 2024-05-08完工标准(DoD)与验收条件(AC)究竟有什么不同?
- 2024-05-084万 star 的 NocoDB 在 sealos 上一键起,轻松把数据库编程智能表格
- 2024-05-08Mac 版Stable Diffusion WebUI的安装
- 2024-05-08解锁CodeGeeX智能问答中3项独有的隐藏技能
- 2024-05-08RAG算法优化+新增代码仓库支持,CodeGeeX的@repo功能效果提升