• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

lua调用java过程

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

 

在cocos2dx框架中,有继承好的luaj文件来方便我们去使用lua调用java底层代码,注意:luaj只能使用在安卓平台下,如果在平台下使用,会出错,

所以使用前需要加平台判断,方法 如下:

local luaj = require("src/cocos/cocos2d/luaj")--引入luaj库

 

luaj.callStaticMethod("org/cocos2dx/lua/类文件名",方法名, {参数}, 签名)

 

例如:

 

在java中的text.java文件代码如下:

void showText()

{

  ....

}

 

lua调用代码

luaj.callStaticMethod("org/cocos2dx/lua/test","showText",{}, "()V")传递参数需要通过table存储,没用参数可以写一个空的table,最后一个参数签名是确定传参数据类型和返回数据类型。

签名中的“()”括号是填入参数类型,参数类型的签名可以打开luaj.lua文件查看,括号后的参数是返回类型。"V"是指没有返回类型,

如果参数是布尔形,返回时布尔形,签名可以写成“(Z)Z”,

贴出luaj.lua代码如下

 

local luaj = {}

 

local callJavaStaticMethod = LuaJavaBridge.callStaticMethod

 

local function checkArguments(args, sig)

    if type(args) ~= "table" then args = {} end

    if sig then return args, sig end

 

    sig = {"("}

    for i, v in ipairs(args) do

        local t = type(v)

        if t == "number" then

            sig[#sig + 1] = "F"

        elseif t == "boolean" then

            sig[#sig + 1] = "Z"

        elseif t == "function" then

            sig[#sig + 1] = "I"

        else

            sig[#sig + 1] = "Ljava/lang/String;"

        end

    end

    sig[#sig + 1] = ")V"

 

    return args, table.concat(sig)

end

 

function luaj.callStaticMethod(className, methodName, args, sig)

    local args, sig = checkArguments(args, sig)

    --echoInfo("luaj.callStaticMethod(\"%s\",\n\t\"%s\",\n\targs,\n\t\"%s\"", className, methodName, sig)

    return callJavaStaticMethod(className, methodName, args, sig)

end

 

return luaj

 

从里面可以看到,如果传入签名为空,会自动生成一个签名,但要注意,lua中并没有整形的数据类型,如果java中接收的参数是整形,传入一个float类型的签名

会出现错误,所以,如果要传入整形数据到java代码中,需要自己手动写入签名,整形的签名是“I”.

 

转载请注明出处,from 博客园HemJohn

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
为cocos2d-x项目增加Lua支持发布时间:2022-07-22
下一篇:
ESP8266LUA脚本语言开发:准备工作-LUA文件加载与变量调用发布时间:2022-07-22
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap