void CCTouchDispatcher::addTargetedDelegate(CCTouchDelegate *pDelegate, int nPriority, bool bSwallowsTouches)
{
CCTouchHandler pHandler = CCTargetedTouchHandler::handlerWithDelegate(pDelegate, nPriority, bSwallowsTouches);
if (! m_bLocked)
{
forceAddHandler(pHandler, m_pTargetedHandlers);
}
else
{
/ If pHandler is contained in m_pHandlersToRemove, if so remove it from m_pHandlersToRemove and return.
* Refer issue #752(cocos2d-x)
/
if (ccCArrayContainsValue(m_pHandlersToRemove, pDelegate))
{
ccCArrayRemoveValue(m_pHandlersToRemove, pDelegate);
return;
}
// CCTouchHandler CCTouchDispatcher::findHandler(CCTouchDelegate *pDelegate)并不会检索m_pHandlersToAdd,所以不知道这是设计上的遗漏,还是有意为之。
m_pHandlersToAdd->addObject(pHandler);
m_bToAdd = true;
}
}
当点击个菜单按钮时,m_bLock == true, 此时如果新建个其他可触摸对象A,并启用A的触摸,那么此时通过findHandler是检索不到A的,那么就无法对A进行一些操作。我觉得这不是很方便。