Android中Cocos2d-X引擎响应按键消息

http://www.25kx.com/art/1908278
http://blog.csdn.net/u012839224/article/details/37764193

一、修改cocos2dx/platform/android/jni目录下TouchesJni.cpp文件,添加你想处理的键值,该值务必与Android对应键值保持一致,下面为返回按键和菜单按键的例子,可以添加自己想要的键值:

1 #define KEYCODE_BACK 0x04 2 #define KEYCODE_MENU 0x52

二、修改该文件下的jboolean Java_org_cocos2dx_lib_Cocos2dxRenderer_nativeKeyDown(JNIEnv * env, jobject thiz, jint keyCode)函数如下:

1 jboolean Java_org_cocos2dx_lib_Cocos2dxRenderer_nativeKeyDown(JNIEnv * env, jobject thiz, jint keyCode) { 2 CCDirector* pDirector = CCDirector::sharedDirector(); 3 switch (keyCode) { 4 case KEYCODE_BACK: 5 if (pDirector->getKeypadDispatcher()->dispatchKeypadMSG(kTypeBackClicked)) 6 return JNI_TRUE; 7 break; 8 case KEYCODE_MENU: 9 if (pDirector->getKeypadDispatcher()->dispatchKeypadMSG(kTypeMenuClicked)) 10 return JNI_TRUE; 11 break; 12 default: 13 return JNI_FALSE; 14 } 15 return JNI_FALSE; 16 } 17 }

对应的keyCode就是等待处理的键值。

三、修改cocos2dx/keypad_dispatcher目录下CCKeypadDispatcher.h文件如下枚举:

1 typedef enum { 2 // the back key clicked msg 3 kTypeBackClicked = 1, 4 kTypeMenuClicked, 5 } ccKeypadMSGType;

其中的消息类型kTypeBackClicked和kTypeMenuClicked就是第二步中的消息类型的声明。

四、修改对应CPP文件CCKeypadDispatcher.cpp,修改函数dispatchKeypadMSG(ccKeypadMSGType nMsgType),添加自己想要处理的消息类型,这里还是用返回和菜单键举例:

1 if (m_pDelegates->count() > 0) 2 { 3 CCObject* pObj = NULL; 4 CCARRAY_FOREACH(m_pDelegates, pObj) 5 { 6 CC_BREAK_IF(!pObj); 7 8 pHandler = (CCKeypadHandler*)pObj; 9 pDelegate = pHandler->getDelegate(); 10 11 switch (nMsgType) 12 { 13 case kTypeBackClicked: 14 pDelegate->keyBackClicked(); 15 break; 16 case kTypeMenuClicked: 17 pDelegate->keyMenuClicked(); 18 break; 19 default: 20 break; 21 } 22 } 23 }

其中switch语句中要处理的就是自定义的消息类型.

五、修改当前目录下的CCKeypadDelegate.h文件,为CC_DLL CCKeypadDelegate添加如下接口,即为对应消息的响应函数:

1 public: 2 // The back key clicked 3 virtual void keyBackClicked() {} 4 5 // The menu key clicked. only available on wophone & android 6 virtual void keyMenuClicked() {};

六、在要响应的类中实现以上接口即可。

以上为我自己的一些总结,如有不足和错误之处,还请各位批评指正!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值