Cocos2d-x CCSprite 实现触摸事件的一个问题

    最近学习Cocos2d-x开发游戏,实现了一个类,继承自CCSprite和CCTouchDelegate,实现了触摸事件,出现了一个问题就是:在该实例调用removeFromParentAndCleanup(true)方法后,该精灵已经从屏幕上移除,但是点击该精灵原来的位置时,程序会出错。经检查是虽然精灵从屏幕上移除了但,触摸事件并没有移除,导致触发触摸时,仍运行了精灵注册的事件,最后导致了程序的崩溃!

解决的方法也很简单,在移除精灵时,也注销事件。

void Block::onEnter()
{
    CCSprite::onEnter();
    CCDirector::sharedDirector()->getTouchDispatcher()->addTargetedDelegate(this,0,false);//注册事件
}

void Block::onExit()
{
    CCDirector::sharedDirector()->getTouchDispatcher()->removeDelegate(this);//移除事件
    CCSprite::onExit();
}
View Code

    出现问题后,在网上找不到这个问题的答案,倒是搜到一个相同的问题,但并没有人解答!这个问题很简单,但网上竟然找不到,这就太不可思议了!毕竟像我这样粗心应该很多才对啊!算了!做个记录!

posted @ 2013-05-30 22:32  暴Tyrant君  阅读(645)  评论(0编辑  收藏  举报