void TouchGrabber::update(float delta) { mPlayDeltaTime += delta; if (bPlaying == false) return; if (mTouchVecIndice >= mTouchesRecVector.size()) { stop(); return; } TouchRecord rec = mTouchesRecVector.at(mTouchVecIndice); ///CCLOG("rec time: %f play dt: %f",rec.time / 1000.f, mPlayDeltaTime); if (rec.time / 1000.f > mPlayDeltaTime) return; CCTouchDispatcher *dispatcher = CCDirector::sharedDirector()->getTouchDispatcher(); CCSet set; switch (rec.event) { case kTouchBegan: mTouch = new CCTouch(); /// Touch will be destroyed when ended/cancelled mTouch->setTouchInfo(0, rec.x, rec.y); set.addObject(mTouch); dispatcher->touchesBegan(&set, NULL); break; case kTouchMoved: mTouch->setTouchInfo(0, rec.x, rec.y); set.addObject(mTouch); dispatcher->touchesMoved(&set, NULL); break; case kTouchEnded: mTouch->setTouchInfo(0, rec.x, rec.y); set.addObject(mTouch); dispatcher->touchesEnded(&set, NULL); break; case kTouchCancelled: mTouch->setTouchInfo(0, rec.x, rec.y); set.addObject(mTouch); dispatcher->touchesCancelled(&set, NULL); break; default: CCAssert(false, "Unknown touch event."); break; } mTouchVecIndice++; }