update method

  1. @override
void update(
  1. double delta
)
override

Called on every frame to update the GMovieClip's state.

The delta parameter is the time elapsed since the last frame, measured in seconds.

Implementation

@override
void update(double delta) {
  super.update(delta);
  if (playing && frameCount > 1) {
    accumulatedTime += delta * timeDilation;
    if (accumulatedTime >= speed) {
      currentFrame +=
          reversed ? -(accumulatedTime ~/ speed) : accumulatedTime ~/ speed;
      if (reversed && currentFrame < 0) {
        if (repeatable) {
          currentFrame = (frameCount + currentFrame) % frameCount;
        } else {
          currentFrame = 0;
          playing = false;
        }
      } else if (!reversed && currentFrame >= frameCount) {
        if (repeatable) {
          currentFrame = currentFrame % frameCount;
        } else {
          currentFrame = frameCount - 1;
          playing = false;
          _onFramesComplete?.dispatch();
          return;
        }
      }
      if (targetFrame > -1 && currentFrame == targetFrame) {
        playing = false;
      }
      texture = _frameTextures![currentFrame];
    }
    accumulatedTime %= speed;
  }
}