facebookarchive / pop

An extensible iOS and OS X animation library, useful for physics-based interactions.
Other
19.66k stars 2.88k forks source link

_POPPropertyAnimationState isPaused reset the progress #410

Open showxu opened 6 years ago

showxu commented 6 years ago

When the POPPropertyAnimation switch to unpaused state by setting isPaused property to true, the function blow in struct _POPAnimationState is triggered

void setPaused(bool f) {
  if (f != paused) {
   paused = f;
     if (!paused) {
       reset(false);
     }
  }
}

function virtual void reset(bool all) in setPausedfucntion body will trigger a v-table dispatch to reset function of struct _POPPropertyAnimationState

virtual void reset(bool all) {
  _POPAnimationState::reset(all);

    if (all) {
      currentVec = NULL;
      previousVec = NULL;
      previous2Vec = NULL;
    }
  progress = 0;
  resetProgressMarkerState();
  didReachToValue = false;
  distanceVec = NULL;
}

which will reset the animation progress, cause the animation restart from the origin state.

Is there any special reason to make such design? It cause my animation on layer restart when resume form the paused state.