大家好,又见面了,我是全栈君,祝每个程序员都可以多学几门语言。
这两天最终闲了一下,就顺手又把quick捡起来又学了学,一直都认为quick比cocos2dx那套lua绑定要方便很多,今天试了下android返回键的监听,还是挺好弄的,所以就有了这篇。
首先说明一下使用的quick版本号——2.2.5。
直接上代码
代码语言:javascript复制function MainScene:addBackEvent()
if device.platform == "android" then
self.touchLayer = display.newLayer()
self.touchLayer:addNodeEventListener(cc.KEYPAD_EVENT, function(event)
if event.key == "back" then
--CCDirector:sharedDirector():endToLua()
local javaClassName = "com/cocos2dx/testgame/Testgame"
local javaMethodName = "exit"
luaj.callStaticMethod(javaClassName, javaMethodName)
end
end)
self.touchLayer:setKeypadEnabled(true)
self:addChild(self.touchLayer)
end
end
比較好理解,创建一个层,为该层加入�一个事件监听,这个事件监听的类型是keypad,假设key的值是back那么就运行里面的代码了,假设不须要显示android原生的对话框,仅仅要关闭程序,仅仅须要运行上面代码中凝视的部分就能够了。
2.2.3之后的版本号在加入�事件监听上与之前有所不同,这里须要注意下。
当然做软件嘛,好歹有个温馨提示,防止用户无意点到退出游戏就不友好了,所以这里调用了一下android原生对话框来显示。quick提供了一个luajavabridge这个sample,能够非常轻松调用到android中的静态函数。
这里还是贴一下android中调用的函数代码
代码语言:javascript复制public static void exit() {
instance.runOnUiThread(new Runnable() {
@Override
public void run() {
Builder builder = new Builder(instance);
builder.setTitle("提示");
builder.setMessage("确定退出吗");
builder.setIcon(android.R.drawable.ic_dialog_info);
builder.setPositiveButton("确定", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
System.exit(0);
}
});
builder.setNegativeButton("取消", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss(); }
}).show();
}
});
}
这样就大功告成!
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/118682.html原文链接:https://javaforall.cn