微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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。

原文地址:https://www.jb51.cc/cocos2dx/344101.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐