2012-12-04 15 views
5

Ich benutze cocos2dx, um ein kleines Spiel zu machen und in der Aktivität meines Spiels gebe ich die folgenden Funktionen, um zurück Knopf zu behandeln.Android Back-Taste funktioniert nicht

@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(); 
} 

Auf Taste i die folgende Warnung

in meinem logcat erhalten drücken zurück

nicht keycharmap Datei

Fehler beim Laden der keycharmap Datei ‚/ system/usr/keychars/QTouch-Touchscreen öffnen kann .kcm.bin '. hw.keyboards.65538.devname = 'qtouch-touchscreen'

Der Anruf erreicht onKeydown oder onDestroy Funktionen nicht.

Bitte sagen Sie mir, warum diese Warnung verursacht wird und warum ich nicht mit der android Zurück-Taste umgehen kann.

Die Funktionen arbeiten auf meinem java android Projekt gut, aber nicht in meinem cocos2d-x Projekt

Antwort

7

Es wurde hier in der Datei behandelt wird Cocos2dxGLSurfaceView.java

es ändern unten an, wo myActivity die cocos2dActicity ist

 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

Vielen Dank das ist, was ich gesucht habe – glo

+0

Es geht nicht, wenn ich es wieder laufen die Fortsetzung von wo es war. – McDermott

+0

Wie genau erhalten Sie Zugriff auf die Aktivität hier? –

1

Haben Sie die Touch aktiviert? Wenn nicht, bitte aktiviere es und hoffe, es wird dein Problem lösen.

Ich nehme an, das ist Knopf in Ihrem Spielbildschirm.

+0

Nein ich die Zurück-Taste auf dem Android-Handy gedacht. Die Home-Taste am Telefon funktioniert einwandfrei, aber die Zurück-Taste funktioniert nicht. – glo

2

Um zurück drücken Taste drücken müssen Sie onBackPressed() Methode Ihrer Aktivität neu definieren, nicht diese beiden Methoden.

+0

Ich habe das auch versucht, aber Anruf erreicht 'onBackPressed()' Methode entweder nicht. – glo

+0

Es scheint cocos caprute zurückpressen. Überprüfen Sie diese Nachricht, vielleicht ist das, was Sie suchen http://www.cocos2d-x.org/boards/6/topics/5041?r=5059#message-5059 – Evos

+0

Aber dies wird nur helfen, wenn ich CCLayer erben was ich nicht bin. Gibt es einen anderen Weg, diese Krise zu lösen? – glo

2

einfach Ihre Anwendungen implementiert für Override-Methode für 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

Ja, ich überstehe nur onKeyDown-Funktion, aber es funktioniert gut auf meinem Java-Android-Projekt. Es funktioniert einfach nicht in meinem cocos2d-x-Projekt. – glo

1

Hier ist ein Update für Cocos2d-x Version 3+

Dies wurde einfach beantwortet (und arbeitet) here

sowie eine etwas weniger vollständige youtube here