CWidgetTouchModel CLayout::onTouchBegan(Touch* pTouch) { m_pSelectedWidget = NULL; m_eSelectedWidgetTouchModel = eWidgetTouchNone; Point tNodePoint = convertToNodeSpace(pTouch->getLocation()); int nCount = _children.size(); if(nCount > 0 ) { for(int i = nCount-1; i >= 0; --i) { Node* pNode = _children.at(i); CWidget* pWidget = dynamic_cast<CWidget*>(pNode); if( pWidget && pNode->isVisible() && pWidget->isEnabled() && pWidget->isTouchEnabled() ) { if( pNode->getBoundingBox().containsPoint(tNodePoint) ) { m_eSelectedWidgetTouchModel = pWidget->executeTouchBeganHandler(pTouch); if( m_eSelectedWidgetTouchModel == eWidgetTouchNone ) { m_pSelectedWidget = NULL; m_eSelectedWidgetTouchModel = eWidgetTouchNone; } else { m_pSelectedWidget = pWidget; return m_eSelectedWidgetTouchModel; } } } } } return eWidgetTouchNone; }
bool CWidgetLayout::ccTouchBegan(CCTouch *pTouch, CCEvent *pEvent) { if( m_bTouchEnabled && m_bVisible && m_pChildren && m_pChildren->count() > 0 ) { CCPoint touchPointInView = convertToNodeSpace(pTouch->getLocation()); if( m_pChildren && m_pChildren->count() > 0 ) { CCObject* pObject = NULL; CCARRAY_FOREACH_REVERSE( m_pChildren, pObject ) { CCNode* pNode = dynamic_cast<CCNode*>(pObject); CWidget* pWidget = dynamic_cast<CWidget*>(pObject); if( pWidget && pNode->isVisible() && pWidget->isEnabled() && pWidget->isTouchEnabled() ) { if( pNode->boundingBox().containsPoint(touchPointInView) ) { if( pWidget->executeTouchBeganHandler(pTouch) != eWidgetTouchNone ) { m_pSelectedWidget = pWidget; m_bIsTouched = true; m_fTouchedDuration = 0.0f; return true; } } } }
bool CWidgetWindow::onTouchBegan(Touch *pTouch, Event *pEvent) { if(m_bModalable) return true; unsigned int nCount = _children.size(); if( m_bTouchEnabled && _visible && nCount > 0 ) { Vec2 touchPointInView = convertToNodeSpace(pTouch->getLocation()); for(int i = nCount-1; i >= 0; --i) { Node* pNode = _children.at(i); CWidget* pWidget = dynamic_cast<CWidget*>(pNode); if( pWidget && pNode->isVisible() && pWidget->isEnabled() && pWidget->isTouchEnabled() ) { if( pNode->getBoundingBox().containsPoint(touchPointInView) ) { if( pWidget->executeTouchBeganHandler(pTouch) != eWidgetTouchNone ) { m_pSelectedWidget = pWidget; m_bIsTouched = true; m_fTouchedDuration = 0.000001f; return true; } } } } m_pSelectedWidget = NULL; } return m_bModalable; }
void CWidgetWindow::onTouchesBegan(const std::vector<Touch*>&touches, Event *unused_event) { for(unsigned int i=0;i<touches.size(); i++) { Touch* pTouch = touches.at(i); if( m_bTouchEnabled && m_bMultiTouchEnabled && _visible && _children.size() > 0 ) { Vec2 touchPointInView = convertToNodeSpace(pTouch->getLocation()); for(int j=_children.size()-1;j>=0;--j){ Node* pNode = _children.at(j); CWidget* pWidget = dynamic_cast<CWidget*>(pNode); if( pWidget && pNode->isVisible() && pWidget->isEnabled() && pWidget->isTouchEnabled() ) { bool bSameWidgetBreak = false; if( pNode->getBoundingBox().containsPoint(touchPointInView) ) { //make sure it can not happened on the same widget map<int, __ccMULTITOUCHTARGET>::iterator mitr = m_mMultiTouchKeeper.begin(); for(; mitr != m_mMultiTouchKeeper.end(); ++mitr) { if( mitr->second.pWidget == pWidget ) { bSameWidgetBreak = true; break; } } if( bSameWidgetBreak ) { break; } if( pWidget->executeTouchBeganHandler(pTouch) != eWidgetTouchNone ) { __ccMULTITOUCHTARGET tKeeper; tKeeper.fTouchedDuration = 0.000001f; tKeeper.pWidget = pWidget; tKeeper.pLongClickedWidgetObject = NULL; m_mMultiTouchKeeper[pTouch->getID()] = tKeeper; return; } } } } } } }