【巴嘎日记】cocos2d-x CCMenuItem 在回调函数中清楚自身出现的Bug
2013-12-15 17:34
543 查看
void CCMenuItem::activate() { if (m_bIsEnabled) { if (m_pListener && m_pfnSelector) { (m_pListener->*m_pfnSelector)(this); } if (kScriptTypeNone != m_eScriptType) { CCScriptEngineManager::sharedManager()->getScriptEngine()->executeMenuItemEvent(this); } } }
Bug的位置
Bug发生时间:
点击一个CCMenuItem CCMenuItem的回调函数Remove他本身。
调用堆栈
Bug的位置
根据大神们的分析,这个Bug产生的理由是在CCMenuItem的回调函数中有Remove CCMenuItem的行为,当点击时,Delete了CCMenuItem但是CCMenuItem之前委托了在TouchDispathcer与里面的动作不能被取消,如CCTouchEnd,然后CCTouchEnd回来回调CCMenuItem,但此时的CCMenuItem已经被Release掉了。所以就出现了Bug。
然后上网好像有很多解决方案,但是么有一个能解决我的问题。Orz...TAT...
附上其他大神的解决方案
http://www.cocos2d-iphone.org/forums/topic/cctouchdispatcher-bug-ccmenu-bug/
http://hi.baidu.com/ligh0721/item/6bd9c5929930cbd87a7f01ee
或者直接Google CCMenuItem Bug
相关文章推荐
- 【Cocos2D-X 游戏引擎】初窥门径(16)几种常用的 CCMenuItem、自定义Button
- cocos2d-x学习笔记-CCMenu和CCMenuItem详解
- Cocos2d-x 带冷却效果的菜单按钮CCMenuItem
- cocos2d-x学习笔记-CCMenu和CCMenuItem详解
- cocos2d-x之-CCMenuItemToggle使用方法
- cocos2d-x TestLua 之 CCMenuItemImage 菜单类
- cocos2d-x、CCMenu、CCMenuItem
- cocos2d-x 菜单CCMenu和CCMenuItemImage应用实例
- cocos2d-x TestLua 之 CCMenuItemLabel CCMenuItemSprite CCMenuItemFont 菜单类
- cocos2d-x TestLua 之 CCMenuItemLabel CCMenuItemSprite CCMenuItemFont 菜单类
- 在 cocos2d 中判断互相重叠的 CCMenuItem
- cocos2d-X 节点(CCMenuItem.h)API
- cocos2d-x 开关按钮 三态按钮 的实现 CCMenuItemToggle
- cocos2d-x ——菜单层(CCMenuItemFont)二
- cocos2D(八)---- CCMenu && CCMenuItem
- CCMenuItemImage 让按钮被点击时显示另一张图片(cocos2d-x基础)
- cocos2d-x CCMenuItem自动排列
- Cocos2d-x ——菜单层(CCMenuItemLabel) 一
- 文本转载【Cocos2D-X 】初窥门径(16)几种常用的 CCMenuItem、自定义Button
- cocos2d-x 开关按钮 三态按钮 的实现 CCMenuItemToggle