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

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

转载于:https://www.cnblogs.com/tyrant2012/archive/2013/05/30/Cocos2d-x.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值