2012-12-04 48 views
5

Tôi đang sử dụng cocos2dx để tạo một trò chơi nhỏ và trong hoạt động của trò chơi, tôi cung cấp các chức năng sau để xử lý nút quay lại.Nút quay lại Android không hoạt động

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

On nhấn lại vào nút i nhận được cảnh báo sau đây trong logcat tôi

Không thể mở tập tin keycharmap

Lỗi tập tin tải keycharmap '/ system/usr/keychars/qtouch-màn hình cảm ứng .kcm.bin '. hw.keyboards.65538.devname = 'qtouch-touchscreen'

Cuộc gọi không tiếp cận các chức năng onKeyDown hoặc onDestroy.

Hãy cho tôi biết lý do cảnh báo này được gây ra và lý do tôi không thể xử lý nút quay lại Android.

Các chức năng hoạt động tốt trên dự án java android của tôi nhưng không có trong dự án cocos2d-x của tôi

Trả lời

7

Nó được được xử lý ở đây trong file Cocos2dxGLSurfaceView.java

thay đổi nó xuống dưới, nơi myActivity là 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

Cảm ơn bạn đây là những gì tôi đang tìm kiếm – glo

+0

Nó không thoát ra, khi tôi chạy nó một lần nữa tiếp tục từ nơi nó được. – McDermott

+0

Bạn truy cập hoạt động ở đây chính xác như thế nào? –

1

Bạn đã bật liên lạc chưa? Nếu không thì hãy kích hoạt nó và Hope, nó sẽ giải quyết vấn đề của bạn.

Tôi cho rằng đó là nút trong màn hình trò chơi của bạn.

+0

Không i có nghĩa là nút quay lại trên điện thoại Android. Nút home trên điện thoại hoạt động hoàn hảo nhưng nút quay lại không hoạt động. – glo

2

Để xử lý nút quay lại, bạn cần phải xác định lại phương thức hoạt động của mình, không phải là hai phương pháp này.

+0

Tôi đã thử điều này nhưng cuộc gọi cũng không đạt được phương thức 'onBackPressed()'. – glo

+0

Có vẻ như coco caprute back press. Kiểm tra thông báo này, có thể đây là những gì bạn đang tìm kiếm http://www.cocos2d-x.org/boards/6/topics/5041?r=5059#message-5059 – Evos

+0

Nhưng điều này sẽ chỉ giúp ích nếu tôi kế thừa CCLayer mà tôi không. Có cách nào khác để giải quyết cuộc khủng hoảng này không. – glo

2

Chỉ cần ứng dụng của bạn thực hiện cho phương pháp ghi đè cho 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

Có, tôi chỉ ghi đè chức năng onKeyDown nhưng nó hoạt động tốt trên dự án android java của tôi. Nó không hoạt động trong dự án cocos2d-x của tôi. – glo

1

Đây là bản cập nhật cho Cocos2d-x phiên bản 3+

này đã được trả lời đơn giản (và các công trình) here

cũng như youtube hơi ít hoàn here

Các vấn đề liên quan