layer中重写以下两个方法:
- virtual void keyBackClicked();
- virtual void keyMenuClicked();
-
- void CBaseLayer::keyBackClicked() {
- int iManSceneTag = CCDirector::sharedDirector()->getRunningScene()->getTag();
- if (MAIN_SCENE_TAG == iManSceneTag) {
- CCDirector::sharedDirector()->end();
- #if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
- exit(0);
- #endif
- }
- }
- void CBaseLayer::keyMenuClicked() {
-
- }
以上BaseLayer是需要响应返回键事件的所有层的基类,避免了所有层都需要写同样的代码;2.或者自己派生CCKeypadDelegate的子类,然后注册为键盘事件的委托调用
- class MyKeypadDelegate:public CCKeypadDelegate {
- public:
- virtual void keyBackClicked();
- virtual void keyMenuClicked();
- };
-
- m_pKeypadDlegate = new MyKeypadDelegate();
- pDirector->getKeypadDispatcher()->addDelegate(m_pKeypadDlegate);
这样就可以全局响应键盘事件
CCLayer也是继承自CCKeypadDelegate