2012-12-04 137 views
5

我正在使用cocos2dx來製作小遊戲,並在我的遊戲活動中,我給出了以下功能來處理後退按鈕。Android後退按鈕不起作用

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) 
{ 
    return super.onKeyDown(keyCode, event); 
} 

@Override 
public void onDestroy() 
{ 
    android.os.Process.killProcess(android.os.Process.myPid()); 
    super.onDestroy(); 
} 

在我的logcat按後退按鈕,我得到以下警告

無法打開keycharmap文件

錯誤加載keycharmap文件「/系統的/ usr/keychars/QTouch軟件,觸摸屏.kcm.bin'。 'ht.keyboards.65538.devname ='qtouch-touchscreen'

該調用沒有達到onKeyDown或onDestroy函數。

請告訴我爲什麼會出現此警告,以及爲什麼我無法處理android後退按鈕。

的功能很好地工作在我的Java的Android項目,但不是在我的cocos2d-x項目

回答

7

它是在這裏處理的文件中Cocos2dxGLSurfaceView.java

將其更改爲以下,其中myActivity是cocos2dActicity

 case KeyEvent.KEYCODE_BACK: 
        AlertDialog ad = new AlertDialog.Builder(myActivity) 
        .setTitle("EXIT?") 
        .setMessage("Do you really want to exit?") 
        .setPositiveButton("YES", new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface dialog, int which) { 
          ((Cocos2dxActivity)myActivity).finish(); 
         } 
        }) 
        .setNegativeButton("NO", new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface dialog, int which) { 

         } 
        }).create(); 
        ad.show(); 
      return true; 
     case KeyEvent.KEYCODE_MENU: 
+0

謝謝你這是我正在尋找的 – glo

+0

它不會退出,當我再次運行時,它從那裏繼續。 – McDermott

+0

您究竟如何能夠訪問此處的活動? –

1

是否啓用了觸摸?如果不是,那麼請啓用它,希望,它會解決你的問題。

我假設你的遊戲畫面是按鈕。

+0

沒有我說的是Android手機上的後退按鈕。手機上的主頁按鈕功能完美,但後退按鈕無法使用。 – glo

2

要處理返回按鈕,您需要重新定義您的活動的onBackPressed()方法,而不是這兩種方法。

+0

我也試過,但是調用也沒有達到'onBackPressed()'方法。 – glo

+0

看起來科科斯caprute回壓。檢查這個消息,也許這是你在找什麼http://www.cocos2d-x.org/boards/6/topics/5041?r=5059#message-5059 – Evos

+0

但是,這將有助於只有當我繼承CCLayer我不是。還有別的辦法可以解決這場危機嗎? – glo

2

只要你的應用程序實現了對onkeydown事件重寫方法,

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    // TODO Auto-generated method stub 
    if (keyCode == KeyEvent.KEYCODE_BACK) { 
     // Here to implements for your code. 
     Log.d(TAG, "KEYCODE_BACK"); 
    } 
    return super.onKeyDown(keyCode, event); 
} 
+0

是的,我只是重寫onKeyDown函數,但它在我的java android項目上工作正常。它只是在我的cocos2d-x項目中不起作用。 – glo

1

這是Cocos2d-x版本3+的更新版本

這已經很簡單地回答(和作品)here

以及一個稍微不那麼完整的YouTube here