void CCEGLView::onTouchesEnd(int id[], float x[], float y[], int pointerNumber) { result r = E_SUCCESS; CCSet set; for(int i = 0 ; i < pointerNumber ; i++ ) { CCTouch *pTouch = NULL; r = s_mapTouches.GetValue(id[i], pTouch); if (E_SUCCESS == r && pTouch != NULL) { pTouch->SetTouchInfo(0, (x[i] - m_rcViewPort.origin.x) / m_fScreenScaleFactor , (y[i] - m_rcViewPort.origin.y) / m_fScreenScaleFactor); set.addObject(pTouch); s_mapTouches.Remove(id[i]); pTouch->release(); CCLOG("Ending touches with id: %d, x=%f, y=%f, retain count = %d", id[i], x[i], y[i], pTouch->retainCount()); } } m_pDelegate->touchesEnded(&set, NULL); }