bool CCPanGestureRecognizer::ccTouchBegan(CCTouch * pTouch, CCEvent * pEvent) { if (isRecognizing) { isRecognizing = false; return false; } CCPoint loc = pTouch->getLocation(); if (!isPositionBetweenBounds(loc)) return false; isRecognizing = true; return true; }
bool CCSwipeGestureRecognizer::ccTouchBegan(CCTouch * pTouch, CCEvent * pEvent) { if (isRecognizing) { isRecognizing = false; return false; } initialPosition = pTouch->getLocation(); if (!isPositionBetweenBounds(initialPosition)) return false; CCTime::gettimeofdayCocos2d(&startTime, NULL); isRecognizing = true; return true; }
bool CCPinchGestureRecognizer::onTouchBegan(Touch * pTouch, Event * pEvent) { if (isRecognizing || !isPositionBetweenBounds(pTouch->getLocation())) { return false; } touchNumber++; touches->push_back(pTouch); //start recognizing after that 2 fingers are touching if (touchNumber==2) { isRecognizing = true; } return true; }
bool CCLongPressGestureRecognizer::ccTouchBegan(CCTouch * pTouch, CCEvent * pEvent) { if (isRecognizing) { stopGestureRecognition(); return false; } isMoving = false; currLocation = pTouch->getLocation(); if (!isPositionBetweenBounds(currLocation)) return false; currEvent = pEvent; currTouch = pTouch; schedule(schedule_selector(CCLongPressGestureRecognizer::timerDidEnd), minimumPressDuration); isRecognizing = true; return true; }
bool CCTapGestureRecognizer::ccTouchBegan(CCTouch * pTouch, CCEvent * pEvent) { if (isRecognizing && taps==0) { stopGestureRecognition(); return false; } initialPosition = pTouch->getLocation(); if (!isPositionBetweenBounds(initialPosition)) return false; CCTime::gettimeofdayCocos2d(&startTime, NULL); if (taps>0 && taps<(int)numberOfTapsRequired) { float distance = distanceBetweenPoints(finalPosition, initialPosition); //distance between taps double duration = CCTime::timersubCocos2d(&endTime, &startTime); //duration between taps if (duration>kTapMaxDurationBetweenTaps || distance>kTapMaxDistanceBetweenTaps) { stopGestureRecognition(); } } isRecognizing = true; return true; }