Exemple #1
0
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++;
}