lottie/example : added segmented animation support in lottieview

Change-Id: I7af3109576217e3b92a6a6d9fd9492b5fb4c6bcb
This commit is contained in:
subhransu mohanty
2019-01-15 13:33:17 +09:00
committed by Subhransu Mohanty
parent 4d4fa29212
commit bc2b2b8936
3 changed files with 39 additions and 12 deletions

View File

@@ -24,11 +24,9 @@ static Eina_Bool
animator(void *data , double pos)
{
LottieView *view = static_cast<LottieView *>(data);
float nextPos = pos + view->mStartPos;
if (nextPos > 1.0) nextPos = 1.0;
view->seek(nextPos);
if (nextPos == 1.0) {
view->seek(pos);
if (pos == 1.0) {
view->mAnimator = NULL;
view->finished();
return EINA_FALSE;
@@ -307,10 +305,8 @@ void LottieView::seek(float pos)
{
if (!mPlayer) return;
if (mPalying && mReverse)
pos = 1.0 - pos;
mPos = pos;
mPos = mapProgress(pos);
// check if the pos maps to the current frame
if (mCurFrame == mPlayer->frameAtPos(mPos)) return;
@@ -427,9 +423,8 @@ void LottieView::play()
{
if (!mPlayer) return;
mStartPos = mPos;
if (mAnimator) ecore_animator_del(mAnimator);
mAnimator = ecore_animator_timeline_add(mPlayer->duration()/mSpeed, animator, this);
mAnimator = ecore_animator_timeline_add(duration()/mSpeed, animator, this);
mReverse = false;
mCurCount = mRepeatCount;
mPalying = true;
@@ -460,8 +455,7 @@ void LottieView::restart()
else
mReverse = false;
mStartPos = 0;
if (mAnimator) ecore_animator_del(mAnimator);
mAnimator = ecore_animator_timeline_add(mPlayer->duration()/mSpeed, animator, this);
mAnimator = ecore_animator_timeline_add(duration()/mSpeed, animator, this);
}
}