Cocos2d-x CCSprite 实现触摸事件的一个问题
最近学习Cocos2d-x开发游戏,实现了一个类,继承自CCSprite和CCTouchDelegate,实现了触摸事件,出现了一个问题就是:在该实例调用removeFromParentAndCleanup(true)方法后,该精灵已经从屏幕上移除,但是点击该精灵原来的位置时,程序会出错。经检查是虽然精灵从屏幕上移除了但,触摸事件并没有移除,导致触发触摸时,仍运行了精灵注册的事件,最后导致了程序的崩溃!
解决的方法也很简单,在移除精灵时,也注销事件。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
void Block::onEnter() { CCSprite::onEnter(); CCDirector::sharedDirector()->getTouchDispatcher()->addTargetedDelegate(this,0,false);//注册事件 } void Block::onExit() { CCDirector::sharedDirector()->getTouchDispatcher()->removeDelegate(this);//移除事件 CCSprite::onExit(); }
出现问题后,在网上找不到这个问题的答案,倒是搜到一个相同的问题,但并没有人解答!这个问题很简单,但网上竟然找不到,这就太不可思议了!毕竟像我这样粗心应该很多才对啊!算了!做个记录!