【2014-01-20】cocos2dx学习笔记:吞噬事件相应

📅 2026/7/16 5:46:34 👁️ 阅读次数 📝 编程学习
【2014-01-20】cocos2dx学习笔记:吞噬事件相应

[历史归档]本文原发布于 cstriker1407.info 个人博客,内容为历史存档,仅供参考。
发布时间:2014-01-20| 标题:cocos2dx学习笔记:吞噬事件相应分类:编程 / C && C++ / cocos2dx |标签:cocos2dx·事件响应


cocos2dx学习笔记:吞噬事件相应

    • 上层Layer捕获所有的相应,防止底层接收
      • 备注:
      • .h文件:
      • .cpp文件:

最近项目中用到了cocos2dx来开发一个基于陀螺仪的demo,忙了半个星期,一边学习一边开发,总算搞了出来。这里备份下开发中学习到的一些cocos2dx知识。

上层Layer捕获所有的相应,防止底层接收

我们在做开发的时候,往往有N层layer,有的layer里面有menu,就会被误响应,这里备份一份简单的解决办法。

备注:

解决办法是参考网上的一些教程,根据menu的响应优先级为-128来屏蔽的。作者开发时比较赶项目,没有仔细的学习cocos2dx源码,后续需要仔细学习下cocos2dx的事件分发机制。

.h文件:

classShowLogoLayer:publiccocos2d::CCLayer{public:CREATE_FUNC(ShowLogoLayer);virtualboolinit();voidfinishMe();virtualboolccTouchBegan(cocos2d::CCTouch*pTouch,cocos2d::CCEvent*pEvent);virtualvoidccTouchMoved(cocos2d::CCTouch*pTouch,cocos2d::CCEvent*pEvent);virtualvoidccTouchEnded(cocos2d::CCTouch*pTouch,cocos2d::CCEvent*pEvent);virtualvoidccTouchCancelled(cocos2d::CCTouch*pTouch,cocos2d::CCEvent*pEvent);};

.cpp文件:

voidShowLogoLayer::finishMe(){CCDirector::sharedDirector()->getTouchDispatcher()->removeDelegate(this);this->removeFromParent();}boolShowLogoLayer::init(){if(!CCLayer::init()){returnfalse;}//。。。//。。。CCDirector::sharedDirector()->getTouchDispatcher()->addTargetedDelegate(this,-128-1,true);returntrue;}boolShowLogoLayer::ccTouchBegan(CCTouch*pTouch,CCEvent*pEvent){finishMe();returntrue;}voidShowLogoLayer::ccTouchMoved(CCTouch*pTouch,CCEvent*pEvent){//do nth}voidShowLogoLayer::ccTouchEnded(CCTouch*pTouch,CCEvent*pEvent){//do nth}voidShowLogoLayer::ccTouchCancelled(CCTouch*pTouch,CCEvent*pEvent){//do nth}