void CAScrollView::ccTouchEnded(CCTouch *pTouch, CCEvent *pEvent) { if (m_pTouches->containsObject(pTouch)) { if (m_pTouches->count() == 1) { CCPoint p = CCPointZero; if (m_tPointOffset.size() > 0) { // if (m_tPointOffset.size() > 1) // { // m_tPointOffset.pop_back(); // } for (unsigned int i=0; i<m_tPointOffset.size(); i++) { p = ccpAdd(p, m_tPointOffset.at(i)); } p = p/m_tPointOffset.size(); } m_tInertia = p; m_tPointOffset.clear(); if (m_pScrollViewDelegate) { m_pScrollViewDelegate->scrollViewDidEndDragging(this); } m_bTracking = false; CCDirector::sharedDirector()->getScheduler()->scheduleSelector(schedule_selector(CAScrollView::deaccelerateScrolling), this, 1/60.0f, false); } else if (m_pTouches->count() == 2) { m_bZooming = false; for (unsigned int i=0; i<2; i++) { CCTouch* touch = dynamic_cast<CCTouch*>(m_pTouches->objectAtIndex(i)); if (!touch->isEqual(pTouch)) { CCPoint p = m_pContainer->convertTouchToNodeSpace(touch); m_pContainer->setAnchorPointInPoints(p); break; } } this->backtorangeZooming(); } m_pTouches->removeObject(pTouch); } }