Пример #1
0
void HFViewport::scrollBy(const CCPoint& targetPoint, CCCallFunc* callbackFunc,float time)
{
    unscheduleAll();
    mIsProcessingScroll = true;
    do
    {
        this->mTouchMode = TouchMode_Fling;
        CCPoint curPos = this->m_TargetNode->getPosition();
        CCPoint targetPos = ccpSub(curPos,targetPoint);
        CCSize winsize = CCDirector::sharedDirector()->getWinSize();
        if (targetPos.x >0.0f) {
            targetPos.x = curPos.x;
        }
        if (targetPos.x <winsize.width-MAP_WIDTH*this->m_TargetNode->getScaleX()){
            targetPos.x = winsize.width-MAP_WIDTH*this->m_TargetNode->getScaleX();
        }
        if (targetPos.y >0.0f) {
            targetPos.y = curPos.y;
        }
        if (targetPos.y <winsize.height-MAP_HEIGHT*this->m_TargetNode->getScaleY()){
            targetPos.y =winsize.height-MAP_HEIGHT*this->m_TargetNode->getScaleY();
        }        if(time <0.0f)
        {
            this->m_TargetNode->setPosition(targetPos);
            return;
        }
        CCMoveBy* moveTo = CCMoveBy::create(time, targetPos);
        CCEaseOut* ease = CCEaseOut::create(moveTo, 3);
        ease->setTag(FLINGACTION_TAG);
        this->m_TargetNode->runAction(CCRepeat::create(CCSequence::create(ease, callbackFunc, NULL), 1));
        this->mTouchMode = TouchMode_Fling;
    }
    while(0);
    mIsProcessingScroll = false;
}