2012-12-04 2 views
5

J'utilise cocos2dx pour faire un petit jeu et dans l'activité de mon jeu, je donne les fonctions suivantes pour gérer le bouton de retour.Le bouton de retour Android ne fonctionne pas

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

En appuyant sur le bouton Retour je reçois l'avertissement suivant dans mon logcat

Impossible d'ouvrir le fichier keycharmap

Erreur chargement du fichier keycharmap «/système/usr/keychars/QTouch-écran tactile .kcm.bin '. hw.keyboards.65538.devname = 'qtouch-touchscreen'

L'appel n'atteint pas les fonctions onKeyDown ou onDestroy.

S'il vous plaît dites-moi pourquoi cet avertissement est causé et pourquoi je ne peux pas gérer le bouton arrière Android.

Les fonctions fonctionnent très bien sur mon projet android java mais pas dans mon projet cocos2d-x

Répondre

7

Il est été traité ici dans le fichier Cocos2dxGLSurfaceView.java

changement à ci-dessous, où myActivity est le 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

Merci c'est ce que je cherchais – glo

+0

Il ne sort pas, quand je l'exécute à nouveau le continue d'où il était. – McDermott

+0

Comment avez-vous accès à l'activité ici? –

1

Avez-vous activé le contact? Si ce n'est pas le cas, veuillez l'activer et Espérons que cela règlera votre problème. Je suppose que c'est le bouton dans votre écran de jeu.

+0

un peu moins complet Non je voulais dire le bouton sur le téléphone Android. Le bouton d'accueil sur le téléphone fonctionne parfaitement, mais le bouton de retour ne fonctionne pas. – glo

2

Pour gérer le bouton de retour, vous devez redéfinir onBackPressed() méthode de votre activité, pas ces deux méthodes.

+0

J'ai essayé cela aussi mais l'appel n'atteint pas la méthode 'onBackPressed()' non plus. – glo

+0

Il semble que Cocos caprute en appuyant sur le dos. Cochez ce message, c'est peut-être ce que vous recherchez http://www.cocos2d-x.org/boards/6/topics/5041?r=5059#message-5059 – Evos

+0

Mais cela ne sera utile que si j'hérite de CCLayer ce que je ne suis pas. Y a-t-il un autre moyen de résoudre cette crise? – glo

2

seulement vos applications implémente pour la méthode de remplacement pour 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

Oui, je viens de surcharger la fonction onKeyDown, mais cela fonctionne très bien sur mon projet Android de Java. Cela ne fonctionne tout simplement pas dans mon projet cocos2d-x. – glo

1

Voici une mise à jour pour Cocos2d-x version 3+

Cela a été répondu simplement (et travaille) here

ainsi qu'un youtube here

Questions connexes