cocos2d-x lua LuaJavaBridge

来源:互联网 发布:q das软件使用说明 编辑:程序博客网 时间:2024/04/28 18:55

cocos2d-x为我们封装了LuaJavaBridge,避免了jni的繁琐,现在可以轻松的实现lua和android端的互调了,引读 

LuaJavaBridge - Lua 与 Java 互操作的简单解决方案


看个例子

1、lua调用android端


lua代码

 --引入LuaJavaBridge        local luaj = require "luaj"        local className="com/lua/java/Test" --包名/类名        local args = { "hello android", callbackLua }        local sigs = "(Ljava/lang/String;I)V" --传入string参数,无返回值                    --luaj 调用 Java 方法时,可能会出现各种错误,因此 luaj 提供了一种机制让 Lua 调用代码可以确定 Java 方法是否成功调用。            --luaj.callStaticMethod() 会返回两个值            --当成功时,第一个值为 true,第二个值是 Java 方法的返回值(如果有)            --当失败时,第一个值为 false,第二个值是错误代码        local ok,ret = luaj.callStaticMethod(className,"test",args,sigs)        if not ok then                       item:setString(ok.."error:"..ret)                    end

android端的代码

package com.lua.java;/** * 引入Cocos2dxLuaJavaBridge */import org.cocos2dx.lib.Cocos2dxLuaJavaBridge;public class Test {public static void test(final String param,final int luaFunc){System.out.println("----传过来的参数----param:"+param);System.out.println("-------luaFunc:"+luaFunc);/** * 给lua返回一个字符串 */Cocos2dxLuaJavaBridge.callLuaFunctionWithString(luaFunc, "success");/** * 移除luaId */Cocos2dxLuaJavaBridge.releaseLuaFunction(luaFunc);}}


2、android端调用lua

lua代码,调用的是全局函数

function testAndroid(parameters)    print("--testAndroid--",parameters)cc.Director:getInstance():endToLua()end

android端

import org.cocos2dx.lib.Cocos2dxLuaJavaBridge;
/*** testAndroid lua中的方法名* androidLua 传递给lua函数的参数值*/Cocos2dxLuaJavaBridge.callLuaGlobalFunctionWithString("testAndroid", "androidLua");



0 0