zoukankan      html  css  js  c++  java
  • lua调用java过程

    在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", "%s", args, "%s"", className, methodName, sig)

        return callJavaStaticMethod(className, methodName, args, sig)

    end

    return luaj

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

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

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

  • 相关阅读:
    hibernate 笔记二
    log4j详解及简易搭建
    hibernate 笔记一
    【工作心得】timesten应用(安装配置篇)
    【转】boost 内存池
    【转】基于Socket的UDP和TCP编程介绍
    【工作心得】timesten应用(开发篇)
    【读书笔记】UNIX进程间通信
    【读书笔记】硬链接与软链接
    【转】Linux Socket编程
  • 原文地址:https://www.cnblogs.com/HemJohn/p/5250161.html
Copyright © 2011-2022 走看看