void CCTween::play(CCMovementBoneData *movementBoneData, int durationTo, int durationTween, int loop, int tweenEasing) { CCProcessBase::play(durationTo, durationTween, loop, tweenEasing); if (loop) { m_eLoopType = ANIMATION_TO_LOOP_FRONT; } else { m_eLoopType = ANIMATION_NO_LOOP; } m_iTotalDuration = 0; m_iBetweenDuration = 0; m_iFromIndex = m_iToIndex = 0; bool difMovement = movementBoneData != m_pMovementBoneData; setMovementBoneData(movementBoneData); m_iRawDuration = m_pMovementBoneData->duration; CCFrameData *nextKeyFrame = m_pMovementBoneData->getFrameData(0); m_pTweenData->displayIndex = nextKeyFrame->displayIndex; if (m_pBone->getArmature()->getArmatureData()->dataVersion >= VERSION_COMBINED) { CCTransformHelp::nodeSub(*m_pTweenData, *m_pBone->getBoneData()); m_pTweenData->scaleX += 1; m_pTweenData->scaleY += 1; } if (m_iRawDuration == 0 || m_pMovementBoneData->frameList.count() == 1) { m_eLoopType = SINGLE_FRAME; if(durationTo == 0) { setBetween(nextKeyFrame, nextKeyFrame); } else { setBetween(m_pTweenData, nextKeyFrame); } m_eFrameTweenEasing = Linear; } else if (m_pMovementBoneData->frameList.count() > 1) { m_iDurationTween = durationTween * m_pMovementBoneData->scale; if (loop && m_pMovementBoneData->delay != 0) { setBetween(m_pTweenData, tweenNodeTo(updateFrameData(1 - m_pMovementBoneData->delay), m_pBetween)); } else { if (!difMovement || durationTo == 0) { setBetween(nextKeyFrame, nextKeyFrame); } else { setBetween(m_pTweenData, nextKeyFrame); } } } tweenNodeTo(0); }
void Tween::play(MovementBoneData *movementBoneData, int durationTo, int durationTween, int loop, int tweenEasing) { ProcessBase::play(durationTo, durationTween, loop, tweenEasing); if (loop) { _loopType = ANIMATION_TO_LOOP_FRONT; } else { _loopType = ANIMATION_NO_LOOP; } _totalDuration = 0; _betweenDuration = 0; _fromIndex = _toIndex = 0; bool difMovement = movementBoneData != _movementBoneData; setMovementBoneData(movementBoneData); _rawDuration = _movementBoneData->duration; FrameData *nextKeyFrame = _movementBoneData->getFrameData(0); _tweenData->displayIndex = nextKeyFrame->displayIndex; if (_bone->getArmature()->getArmatureData()->dataVersion >= VERSION_COMBINED) { TransformHelp::nodeSub(*_tweenData, *_bone->getBoneData()); _tweenData->scaleX += 1; _tweenData->scaleY += 1; } if (_rawDuration == 0 ) { _loopType = SINGLE_FRAME; if(durationTo == 0) { setBetween(nextKeyFrame, nextKeyFrame); } else { setBetween(_tweenData, nextKeyFrame); } _frameTweenEasing = Linear; } else if (_movementBoneData->frameList.size() > 1) { _durationTween = durationTween * _movementBoneData->scale; if (loop && _movementBoneData->delay != 0) { setBetween(_tweenData, tweenNodeTo(updateFrameData(1 - _movementBoneData->delay), _between)); } else { if (!difMovement || durationTo == 0) { setBetween(nextKeyFrame, nextKeyFrame); } else { setBetween(_tweenData, nextKeyFrame); } } } tweenNodeTo(0); }