在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
如何使用Luaj进行java与Lua之间的交互调用 一、主要分为两个大步骤,Lua工程的修改,android工程的修改 三、Lua工程中的修改 1.在Cocos-Code-IDE中新建Lua工程 2.新建一个lua类,写上调用android的方法。 local luaj = require "cocos.cocos2d.luaj" --引入luaj local luajTest = class("luajTest") -- 构建lua 类 function luajTest:callandroid() --调用android的方法实现 --包名/类名 这个可以在对应的android工程的manifest中得到 local className="org/cocos2dx/lua/AppActivity" 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 end return luajTest 3.在入口场景中调用android方法。 local MainScene = class("MainScene", cc.load("mvc").ViewBase) local testluaj = require('src.app.models.luajTest')--引入luajTest类 function MainScene:onCreate() -- add background image display.newSprite("MainSceneBg.jpg") :move(display.center) :addTo(self) -- add play button local playButton = cc.MenuItemImage:create("PlayButton.png", "PlayButton.png") :onClicked(function() self:getApp():enterScene("PlayScene") --跳转了一个场景 --在这里尝试调用android static代码 local testluajobj = testluaj.new(self) testluajobj.callandroid(self); end) cc.Menu:create(playButton) :move(display.cx, display.cy - 200) :addTo(self) end return MainScene 4.以上为Lua工程中的修改。 四、android工程的修改 1.找到相对应的android工程的。 2.根据luajTest.lua类中定义的包名类名,找到AppActivity.java 3.打开AppActivity.java,在空白处加上uajTest.lua类中定义要调用的方法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); }
记得在文件上面引入Cocos2dxLuaJavaBridge类。 import org.cocos2dx.lib.Cocos2dxLuaJavaBridge;
4.到此,修改完成。构建apk,安装到手机中,看Log. |
请发表评论