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  大家一起交流

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









  • 相关阅读:
    oracle数据库性能优化 降低IO
    用bat文件设置程序启动环境
    我的go语言上机测试代码
    解决golang.org不能访问的问题
    go语言 windows 32位编译环境搭建
    JQueryEasyUI学习笔记(十一)datagrid 右键菜单,冻结列
    JQueryEasyUI学习笔记(十二)datagrid 提示、格式化表格、表格按钮(附源码)
    JQueryEasyUI学习笔记(十四)tree
    JQueryEasyUI学习笔记(十三) 更换主题皮肤
    JQueryEasyUI学习笔记(七)datagrid
  • 原文地址:https://www.cnblogs.com/jhcelue/p/6817744.html
Copyright © 2011-2022 走看看