cocos lua 调用 java_luaj使用 方法簽名規則 Cocos2dxLuaJavaBridge

public static int getNum(int n){ return n;} -- Java類的名稱local className =“com/qeeplay/frameworks/CheShi”--呼叫的Java方法名local method = 'getDisplayWidth' --呼叫Java方法需要的參數local n = 10 local args = { n } --定義簽名--參數:[I]nteger--返回值:[I]nt local sig =“(I)I”--呼叫Java方法local_,screenwidth = luaj.callStaticMethod(className,method,args,sig)

簽名使用“(依次排列的參數型別)返回值型別”的格式,幾個例子如下:

簽名解釋

()V參數:無,返回值:無

(I)V參數:int,返回值:無

(Ljava/lang/String;)Z參數:字串,返回值:布爾值

(IF)Ljava/lang/String;參數:整數、浮點數,返回值:字串

這里列出不同型別對應的Java簽名字串:

型別名型別I整數,或者Lua function F浮點數Z布爾值Ljava/lang/String;字串V Void空,僅用於指定一個Java方法不返回任何值

936f3757f26a5f06676eea638f98189e.png

cocos2d-x為我們封裝了LuaJavaBridge,避免了jni的繁瑣,現在可以輕松的實現lua和android端的互調了,引讀

看個例子

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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值