日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

【iOS-cocos2d-X 游戏开发之十三】cocos2dx通过Jni调用Android的Java层代码(下)

發布時間:2025/3/21 Android 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【iOS-cocos2d-X 游戏开发之十三】cocos2dx通过Jni调用Android的Java层代码(下) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?示例代碼段2:

Xcode 代碼:

?

  • //靜態函數示例2.有參數,無返回值------------------------------$$$$$$$--------------------------------?
  • #if?(CC_TARGET_PLATFORM?==?CC_PLATFORM_ANDROID)?//判斷當前是否為Android平臺?
  • ????JniMethodInfo?minfo;//定義Jni函數信息結構體?
  • ????//getStaticMethodInfo?次函數返回一個bool值表示是否找到此函數?
  • ????bool?isHave?=?JniHelper::getStaticMethodInfo(minfo,?
  • ????????????????????????????????????????????????"com/ai/ommr/OhMonsterMR4Android",?"testFunWithInt","(I)V");???
  • ??
  • ????if?(!isHave)?{?
  • ????????CCLog("jni:此函數不存在");?
  • ????}else{?
  • ????????CCLog("jni:此函數存在");?
  • ????????//調用此函數?
  • ????????minfo.env->CallStaticVoidMethod(minfo.classID,?minfo.methodID,823);?
  • ????}?
  • ????CCLog("jni-java函數執行完畢");?
  • #endif?
  • Android(Java) 代碼:

  • //?靜態函數示例2.有參數,無返回值?
  • public?static?void?testFunWithInt(int?_int)?{?
  • ????Log.e("Himi",?"靜態函數示例1.有參數,無返回值;傳入的參數int="?+?_int);?
  • }?
  • 運行截圖:

    示例代碼段3:

    Xcode 代碼:

    ?

  • //靜態函數示例3.有參數,有返回值--------------------------------$$$$$$$--------------------------------?
  • #if?(CC_TARGET_PLATFORM?==?CC_PLATFORM_ANDROID)?//判斷當前是否為Android平臺?
  • ????JniMethodInfo?minfo;//定義Jni函數信息結構體?
  • //getStaticMethodInfo?次函數返回一個bool值表示是否找到此函數?
  • ??
  • bool?isHave?=?JniHelper::getStaticMethodInfo(minfo,?
  • ?????????????????????????????????????????????"com/ai/ommr/OhMonsterMR4Android","testFunWithIntAndRtn","(I)I");?
  • jint?_int?;?
  • if?(!isHave)?{?
  • ????CCLog("jni:此函數不存在");?
  • }else{?
  • ????CCLog("jni:此函數存在");?
  • ????//調用此函數?
  • ????_int?=?minfo.env->CallStaticIntMethod(minfo.classID,?minfo.methodID,823);?
  • ??
  • ????//嘗試jint是否能正常接收返回的int值?
  • ????JniMethodInfo?minfo_ty;?
  • ????bool?isHave?=?JniHelper::getStaticMethodInfo(minfo_ty,?"com/ai/ommr/OhMonsterMR4Android",?"testFunWithInt",??"(I)V");?
  • ?????if?(isHave)?{?
  • ?????????minfo_ty.env->CallStaticVoidMethod(minfo_ty.classID,?minfo_ty.methodID,_int);?
  • ?????}?
  • ??
  • }?
  • CCLog("jni-java函數執行完畢");?
  • #endif?
  • Android(Java) 代碼:

    ?

  • //?靜態函數示例3.有參數,有返回值?
  • public?static?int?testFunWithIntAndRtn(int?_int)?{?
  • ????Log.e("Himi",?"靜態函數示例1.有參數,有返回值;傳入的參數int="?+?_int);?
  • ????return?_int+1000;?
  • }?
  • 運行截圖:

    示例代碼段4:

    Xcode 代碼:

    ?

  • #if?(CC_TARGET_PLATFORM?==?CC_PLATFORM_ANDROID)?//判斷當前是否為Android平臺?
  • ????JniMethodInfo?minfo;//定義Jni函數信息結構體?
  • ????//getStaticMethodInfo?次函數返回一個bool值表示是否找到此函數?
  • ????bool?isHave?=?JniHelper::getStaticMethodInfo(minfo,??"com/ai/ommr/OhMonsterMR4Android","testFunWithStringAndRtn","(I)Ljava/lang/String;");?
  • ????jobject?jobj;?
  • ????if?(!isHave)?{?
  • ????????CCLog("jni:此函數不存在");?
  • ????}else{?
  • ????????CCLog("jni:此函數存在");?
  • ????????//調用此函數?
  • ????????jobj?=?minfo.env->CallStaticObjectMethod(minfo.classID,?minfo.methodID,823);?
  • ????}?
  • ????CCLog("jni-java函數執行完畢");?
  • #endif?
  • Android(Java) 代碼:

    ?

  • //?靜態函數示例4.有參數,有返回值(String類型)?
  • public?static?String?testFunWithStringAndRtn(int?_int)?{?
  • ????Log.e("Himi",?"靜態函數示例4.有參數,有返回值(String類型);int="?+?_int);?
  • ????return?"yes,return?'String'?is?OK?--by?Himi";?
  • }?
  • 運行截圖:

    示例代碼段5:

    Xcode 代碼:

    ?

  • #if?(CC_TARGET_PLATFORM?==?CC_PLATFORM_ANDROID)?//判斷當前是否為Android平臺?
  • ????JniMethodInfo?minfo;//定義Jni函數信息結構體?
  • ????//getStaticMethodInfo?次函數返回一個bool值表示是否找到此函數?
  • ????bool?isHave?=?JniHelper::getStaticMethodInfo(minfo,?
  • ????????????????????????????????????????????????"com/ai/ommr/OhMonsterMR4Android",??//類的路徑?
  • ????????????????????????????????????????????????"rtnActivity",???//方法名?
  • ????????????????????????????????????????????????"()Ljava/lang/Object;");???//括號里的是參數,后面的是返回值。?
  • ????jobject?jobj;?
  • ????if?(isHave)?{?
  • ???????jobj?=?minfo.env->CallStaticObjectMethod(minfo.classID,?minfo.methodID);?
  • ????}?
  • ????CCLog("正確獲取到?jobj");?
  • ??
  • ????//?
  • ????isHave?=?JniHelper::getMethodInfo(minfo,?
  • ?????????????????????????????????????????????????"com/ai/ommr/OhMonsterMR4Android",??//類的路徑?
  • ?????????????????????????????????????????????????"nostaticFun",???//方法名?
  • ?????????????????????????????????????????????????"()V");???//括號里的是參數,后面的是返回值。???
  • ??
  • ????if?(isHave)?{?
  • ?????????minfo.env->CallVoidMethod(jobj,?minfo.methodID);?
  • ????}?
  • ?????CCLog("jni-java函數執行完畢");?
  • #endif?
  • Java 代碼:

    ?

  • //----?函數示例之非靜態函數調用?
  • //(先獲取個對象)?
  • public?static?Activity?actInstance;//定義單例?
  • public?static?Object?rtnActivity()?{?
  • ????return?actInstance;?
  • }?
  • //使用此對象進行調用非靜態函數?
  • public?void?nostaticFun()?{?
  • ????Log.e("Himi",?"no?static?Function?is?OK?-?By?Himi");?
  • }?
  • 運行截圖:










    本文轉自 xiaominghimi 51CTO博客,原文鏈接:http://blog.51cto.com/xiaominghimi/908818,如需轉載請自行聯系原作者

    總結

    以上是生活随笔為你收集整理的【iOS-cocos2d-X 游戏开发之十三】cocos2dx通过Jni调用Android的Java层代码(下)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。