quick-cocos2d-x android返回鍵監聽並實現原生退出對話框

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

發佈了57 篇原創文章 · 獲贊 112 · 訪問量 33萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章