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。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |