cocos2d-x学习笔记(十三)lua与java通过LuaJavaBridge交互
admin
2023-02-11 05:20:05
0

cocos2d-x接入支付等sdk时,如果逻辑写在lua端,经常会用到lua与java的交互,下面通过一个实例来实现lua与java的交互过程

一、lua端

lua中使用luaj.callStaticMethod调用java静态方法

12345678910111213local function onCallBack(msg)    --回调处理    if msg == "success"        --    endendlocal function callJavaCallBackLua()    local luaj = require "cocos.cocos2d.luaj"    local className = "org/cocos2dx/cpp/AppActivity"    local args = { "test", onCallBack }    local sigs = "(Ljava/lang/String;I)V"    local ok = luaj.callStaticMethod(className,"callJavaMethod",args,sigs)end

以上实现通过lua端调用java的静态方法callJavaMethod,并传入2个参数,一个字符串“test”和一个回调函数onCallBack


二、java端

cocos2d-x提供了Cocos2dxLuaJavaBridge带有如下方法可以使用:

1234public static native int callLuaFunctionWithString(int luaFunctionId, String value);  // 调用局部Lua-Functionpublic static native int callLuaGlobalFunctionWithString(String luaFunctionName, String value); // 调用全局Lua-Functionpublic static native int retainLuaFunction(int luaFunctionId); // retain一次Lua-Functionpublic static native int releaseLuaFunction(int luaFunctionId); // release掉Lua-Function

在这里我们使用调用局部Lua-Function callLuaFunctionWithString来做示例

在AppActivity.java合适位置中加入代码

1import org.cocos2dx.lib.Cocos2dxLuaJavaBridge;
1static int luaFuncCallback = 0;
1234public static void callJavaMethod(final String test, final int luaFunc){    //Java中可以直接回调这个函数,也可以先保存下来这个注册的Lua局部函数,一般都是保存下来,等待启用SDK充值逻辑走完后再回调    luaFuncCallback = luaFunc;}
1234567mainActivity.runOnGLThread(new Runnable() {    @Override    public void run() {        Cocos2dxLuaJavaBridge.callLuaFunctionWithString(luaFuncCallback, "success");        Cocos2dxLuaJavaBridge.releaseLuaFunction(luaFuncCallback);    }    });



相关内容

热门资讯

【今日要闻】“约约吉林麻将开挂... 您好:约约吉林麻将这款游戏可以开挂,确实是有挂的,需要了解加客服微信【9752949】很多玩家在这款...
终于明白“情缘是不是有挂?”(... 有 亲,根据资深记者爆料情缘是可以开挂的,确实有挂(咨询软件无需打开直接...
【今日要闻】“来几局怎么开挂?... 有 亲,根据资深记者爆料来几局是可以开挂的,确实有挂(咨询软件无需打开直...
终于明白“全民牛牛到底是不是挂... 终于明白“全民牛牛到底是不是挂?”(外卦神器下载)您好,全民牛牛这个游戏其实有挂的,确实是有挂的,需...
【今日要闻】“牌乐门麻将是不是... 有 亲,根据资深记者爆料牌乐门麻将是可以开挂的,确实有挂(咨询软件无需打...
终于懂了“边锋老友二打一可以开... 网上科普关于“边锋老友二打一有没有挂”话题很是火热,小编也是针对边锋老友二打一作*弊开挂的方法以及开...
【第一财经】“科乐吉林麻将到底... 家人们!今天小编来为大家解答科乐吉林麻将透视挂怎么安装这个问题咨询软件客服徽4282891的挂在哪里...
终于了解“博雅红河棋牌怎么装挂... 您好:博雅红河棋牌这款游戏可以开挂,确实是有挂的,需要了解加客服微信【4282891】很多玩家在这款...
玩家最新攻略“数独大赛辅助器?... 网上科普关于“数独大赛有没有挂”话题很是火热,小编也是针对数独大赛作*弊开挂的方法以及开挂对应的知识...
玩家最新攻略“大运河江苏麻将开... 您好:大运河江苏麻将这款游戏可以开挂,确实是有挂的,需要了解加客服微信【4282891】很多玩家在这...