温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

cocos2d-x学习笔记(十三)lua与java通过LuaJavaBridge交互

发布时间:2020-03-02 18:29:21 来源:网络 阅读:1057 作者:wty530 栏目:游戏开发

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

一、lua端

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

1
2
3
4
5
6
7
8
9
10
11
12
13
local function onCallBack(msg)
    --回调处理
    if msg == "success"
        --
    end
end
local 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带有如下方法可以使用:

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

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

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

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



向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI