微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

cocos2d-iphone – 启用/禁用CCMenu对象的更好方法

* Assertion failure in -[CCTouchdispatcher forceAddHandler:array:],/libs/cocos2d/Platforms/iOS/CCTouchdispatcher.m:108

* Terminating app due to uncaught exception ‘NSInternalInconsistencyException’,reason: ‘Delegate already added to
touch dispatcher.’

导致它的线是

skillsMenu.isTouchEnabled = YES;

skillsMenu只是一个Ccmenu.我喜欢经常使用上面的行来启用/禁用它.

问题是,我不知道如何正确解释这个错误 – 我不知道为什么设置这个属性会导致这样的错误.

也许首先使用那条线是错误的.是否有更好的方法来启用/禁用Ccmenu?

cocos2d-iphone 1.0.1

解决方法

isTouchEnabled注册/取消注册对象的触摸处理程序.

在同一步骤中注册和取消注册触摸处理程序在过去已经引起了问题,尽管在最近的版本中,我认为这已得到修复.

在任何情况下,如果您只是想暂时启用/禁用菜单,启用/禁用单个菜单项的问题就不那么严重了:

-(void) modifyMenu:(Ccmenu*) menu withEnabledValue:(BOOL) enabled
{
    CcmenuItem *menuItem;
    CCARRAY_FOREACH(menu.children,menuItem)
    {
        [menuItem setIsEnabled: enabled ];
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐