bool CCKeypadDispatcher::dispatchKeypadMSG(ccKeypadMSGType nMsgType) { CCKeypadHandler *pHandler; CCKeypadDelegate *pDelegate; CCMutableArray<CCKeypadHandler*>::CCMutableArrayIterator iter; m_bLocked = true; if (m_pDelegates->count() > 0) { for (iter = m_pDelegates->begin(); iter != m_pDelegates->end(); ++iter) { CC_BREAK_IF(!(*iter)); pHandler = *iter; pDelegate = pHandler->getDelegate(); switch (nMsgType) { case kTypeBackClicked: pDelegate->keyBackClicked(); break; case kTypeMenuClicked: pDelegate->keyMenuClicked(); break; default: break; } } } m_bLocked = false; if (m_bToRemove) { m_bToRemove = false; for (unsigned int i = 0; i < m_pHandlersToRemove->num; ++i) { forceRemoveDelegate((CCKeypadDelegate*)m_pHandlersToRemove->arr[i]); } ccCArrayRemoveAllValues(m_pHandlersToRemove); } if (m_bToAdd) { m_bToAdd = false; for (unsigned int i = 0; i < m_pHandlersToAdd->num; ++i) { forceAddDelegate((CCKeypadDelegate*)m_pHandlersToAdd->arr[i]); } ccCArrayRemoveAllValues(m_pHandlersToAdd); } return true; }
void CCScrollWheelDispatcher::addDelegate(CCScrollWheelDelegate *pDelegate) { if (!pDelegate) { return; } if (!m_bLocked) { forceAddDelegate(pDelegate); } else { ccCArrayAppendValue(m_pDelegatesToAdd, pDelegate); m_bToAdd = true; } }
void CCKeypadDispatcher::addDelegate(CCKeypadDelegate* pDelegate) { if (!pDelegate) { return; } if (! m_bLocked) { forceAddDelegate(pDelegate); } else { ccCArrayAppendValue(m_pHandlersToAdd, pDelegate); m_bToAdd = true; } }