quick-cocos2d-x 学习系列之十lua调用JAVA

quick-cocos2d-x 学习系列之十lua调用JAVA

 

         lua脚本虽然强大,但是如果不能灵活方便的调用JAVA难免会显得不足。很多编程语言本身都会涉及到和其他语言的交互,记得很久之前在用MATLAB时候就涉及C与MATLAB中m语言的交互,现在工作也经常设计SHELL、PYTHON、C等交杂。我们就来瞎看LUA与JAVA之间的调用。

1.  代码

代码如下:

    local btn

    btn = cc.ui.UIPushButton.new()

            :setButtonLabel(cc.ui.UILabel.new({text= "call Java - showAlertDialog()", size = 64}))

            :onButtonClicked(function()

                if device.platform ~= "android" then

                   -- print("please run this on android device")

                    btn:setButtonLabel(cc.ui.UILabel.new({text= "please run this on androiddevice", size = 32}))

                    return

                end

               

                -- call Java method

                local javaClassName = "org/cocos2dx/lua/AppActivity"

                local javaMethodName = "showAlertDialog"

                local javaParams = {

                    "How are you ?",

                    "I'm great !",

                    function(event)

                        local str = "Java method callback value is [" .. event .. "]"

                        btn:setButtonLabel(cc.ui.UILabel.new({text= str, size = 32}))

                    end

                }

                local javaMethodSig = "(Ljava/lang/String;Ljava/lang/String;I)V"

                luaj.callStaticMethod(javaClassName, javaMethodName, javaParams, javaMethodSig)

            end)

            :align(display.CENTER, display.cx,display.cy)

            :addTo(self)

 

    btn:setKeypadEnabled(true)

    btn:addNodeEventListener(cc.KEYPAD_EVENT, function (event)

        dump(event)

        local str = "event.keyis [ " .. event.key .. " ]"

                        btn:setButtonLabel(cc.ui.UILabel.new({text= str, size = 32}))

        if event.key == "back" then

            --print("back")

            cc.Director:getInstance():endToLua()

            if device.platform == "windows" or device.platform == "mac" then

                os.exit()

            end

        elseif event.key == "menu" then

            --print("menu")

        end

end)

 

2.  代码解释

创建一个BUTTON,按下的时候根据是否在android平台运行来执行。

如果是在ANDROID平台,设置调用java类的文件路径,调用的方法,调用的方法参数,

(此外设置键盘输入触摸ENABLE,并创建一个触摸监听。判断输入字母,如果是back则退出程序。不过此段代码并无作用)

当在真机上运行的时候,按按下触摸屏,会弹出一个对话框,是由org/cocos2dx/lua/AppActivity.java文件中的函数实现的。

完毕。

最关键的调用函数是luaj .callStaticMethod。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值