这两天终于闲了一下,就顺手又把quick捡起来又学了学,一直都觉得quick比cocos2dx那套lua绑定要方便许多,今天试了下android返回键的监听,还是挺好弄的,所以就有了这篇。
首先说明一下使用的quick版本——2.2.5。
直接上代码
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中调用的函数代码
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(); } }); }这样就大功告成!