這兩天終於閒了一下,就順手又把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();
}
});
}
這樣就大功告成!