zoukankan      html  css  js  c++  java
  • 关于cocos2d-x 和安卓之间的相互调用

    近期在研究cocos2d游戏移植安卓须要调用非常多方法。所以在研究之中写下它们之间相互调用



    首先,cocos2d调用安卓

    在一个.h文件里加入头文件

    #include <jni.h>
    #include "platformandroidjniJniHelper.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  大家一起交流

    假设感觉对你有帮助给个评价









  • 相关阅读:
    Leetcode: Flatten Binary Tree to Linked List
    POJ 1180 Batch Scheduling
    STL容器
    关于bfs时间轴
    dfs遍历痕迹的清理
    dfs、遍历与for
    在各OJ上的名号
    哈尔滨理工大学第七届程序设计竞赛初赛(BFS多队列顺序)
    东北林业大学第12届ACM(打表)
    浙江工业大学迎新预赛(容器的使用)
  • 原文地址:https://www.cnblogs.com/jhcelue/p/6817744.html
Copyright © 2011-2022 走看看