update method
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;
}
}