启用/禁用CCMenu对象的更好方法

Vol*_*ort 4 cocos2d-iphone

*断言失败 - [CCTouchDispatcher forceAddHandler:array:],/ libs /cocos2d/Plane/iOS/CCTouchDispatcher.m:108

*由于未捕获的异常'NSInternalInconsistencyException'而终止应用程序,原因:'委托已添加到触摸调度程序.'

导致它的线是

skillsMenu.isTouchEnabled = YES;
Run Code Online (Sandbox Code Playgroud)

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

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

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

cocos2d-iphone 1.0.1

Mar*_*ark 8

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

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

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

-(void) modifyMenu:(CCMenu*) menu withEnabledValue:(BOOL) enabled
{
    CCMenuItem *menuItem;
    CCARRAY_FOREACH(menu.children, menuItem)
    {
        [menuItem setIsEnabled: enabled ];
    }
}
Run Code Online (Sandbox Code Playgroud)