update method

  1. @override
void update (double t)

Sets the action to a specific point in time. The t value that is passed in is a normalized value 0.0 to 1.0 of the duration of the action. Every action will always recieve a callback with the end time point (1.0), unless it is cancelled.

Implementation

@override
void update(double t) {
  if (t >= 1.0) {
    // Finish all unfinished actions
    for (Action action in _actions) {
      if (!action._finished) {
        action.update(1.0);
        action._finished = true;
      }
    }
  } else {
    for (Action action in _actions) {
      if (action.duration == 0.0) {
        // Fire all instant actions immediately
        if (!action._finished) {
          action.update(1.0);
          action._finished = true;
        }
      } else {
        // Update child actions
        double ta = (t / (action.duration / duration)).clamp(0.0, 1.0);
        if (ta < 1.0) {
          if (action is ActionInterval) {
            ActionInterval actionInterval = action;
            if (actionInterval.curve == null) {
              action.update(ta);
            } else {
              action.update(actionInterval.curve.transform(ta));
            }
          } else {
            action.update(ta);
          }
        } else if (!action._finished){
          action.update(1.0);
          action._finished = true;
        }
      }
    }
  }
}