//触摸:移动 void CNFServerChangeScrollLayer::onTouchMoved(Touch *pTouch, Event *pEvent) { if(m_bTouching==false)return; Vec2 ptTouchPoint =pTouch->getLocation(); Vec2 pNewPos=getPosition(); //移动层 pNewPos.x+=ptTouchPoint.x-m_fTouchPassPosX; this->setPosition(pNewPos); //重置初始点 m_fTouchPassPosX=ptTouchPoint.x; //若触摸到按钮 if (m_bIsTouchBtn==true) { // CCMenu *pMenu = dynamic_cast<CCMenu*>(getChildByTag(enTagMenu)); auto pMenu = static_cast<Menu*>(getChildByTag(enTagMenu)); if (pMenu!=NULL) { pMenu->onTouchCancelled(pTouch,pEvent); m_bIsTouchBtn = false; } } }
void AbstractScene::cancelTouch(int fingerIndex, const glm::vec2& position) { glm::vec2 p = position; bool result = false; FOR_EACH_COMPONENT(onBeforeTouchEvent(TouchEvent::Cancel, fingerIndex, p, result)); if (!result) onTouchCancelled(fingerIndex, position); FOR_EACH_COMPONENT_REVERSE(onAfterTouchEvent(TouchEvent::Cancel, fingerIndex, p, result)); }