* 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
* 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 ]; } }