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

本文详细介绍了在使用Cocos2d-x开发游戏时,遇到精灵移除后触摸事件未同步消失的问题,并提供了解决方法。通过在精灵移除时注销事件,避免了程序崩溃的情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    最近学习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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值