zoukankan      html  css  js  c++  java
  • cocos2d多语言互调之二---java调lua

    1 package org.cocos2dx.lib;
    2 
    3 public class Cocos2dxLuaJavaBridge
    4 {
    5     public static native int callLuaFunctionWithString(int luaFunctionId, String value);
    6     public static native int callLuaGlobalFunctionWithString(String luaFunctionName, String value);
    7     public static native int retainLuaFunction(int luaFunctionId);
    8     public static native int releaseLuaFunction(int luaFunctionId);
    9 }
    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
    下面提供callLuaFunctionWithString用法:
    function JniUtil:callJavaCallbackLua(func)
        local luaj = require "cocos.cocos2d.luaj"
        local className = "org/cocos2dx/lua/AppActivity"
        local args = { "callbacklua", func }
        local sigs = "(Ljava/lang/String;I)V"
        local ok = luaj.callStaticMethod(className,"callbackLua",args,sigs)
        if not ok then
            print("============= call callback error")
        else
            print("------------- call callback success")
        end
    end
    某启用充值的地方,预先注册局部函数
    
    
    local function onBack(msg)
        self:resumeGame() 
    end
    
    JniUtil:getInstance():callJavaCallbackLua(onBack)
    Java中可以直接回调这个函数,也可以先保存下来这个注册的Lua局部函数,一般都是保存下来,等待启用SDK充值逻辑走完后再回调
    static int luaFuncCallback = 0;
    public static void callbackLua(final String tipInfo,final int luaFunc){
      // 根据需要,看是否要retainLuaFunction
      luaFuncCallback = luaFunc;
      // tipInfo为Lua里传来的“callbacklua”这里没用
    }
    Java中充值后回调函数中调用游戏里的lua逻辑
    
    sInstance.runOnGLThread(new Runnable() {
      @Override
      public void run() {
        Cocos2dxLuaJavaBridge.callLuaFunctionWithString(luaFuncCallback, "success");
        Cocos2dxLuaJavaBridge.releaseLuaFunction(luaFuncCallback);
      }
    });
     
  • 相关阅读:
    python之字典
    Python包管理工具
    【转】Python实现修改Windows CMD命令行输出颜色(完全解析)
    进程池中传递实例方法问题
    HTML协议详解
    【转】python数据格式化之pprint
    【转】Python装饰器与面向切面编程
    【转】TCP/IP报文格式
    python之线程学习
    python之面向对象
  • 原文地址:https://www.cnblogs.com/danmoqingshan/p/7561643.html
Copyright © 2011-2022 走看看