Module javafx.graphics
Package javafx.animation

# Class Timeline

java.lang.Object
javafx.animation.Animation
javafx.animation.Timeline

    public final class Timeline
    extends Animation

A `Timeline` can be used to define a free form animation of any `WritableValue`, for example, all `JavaFX Properties`.

A `Timeline`, defined by one or more `KeyFrame`s, processes individual `KeyFrame` sequentially, in the order specified by `KeyFrame.time`. The animated properties, defined as key values in `KeyFrame.values`, are interpolated to/from the targeted key values at the specified time of the `KeyFrame` to `Timeline`'s initial position, depends on `Timeline`'s direction.

`Timeline` processes individual `KeyFrame` at or after specified time interval elapsed, it does not guarantee the timing when `KeyFrame` is processed.

The `Animation.cycleDurationProperty()` will be set to the largest time value of Timeline's keyFrames.

If a `KeyFrame` is not provided for the `time==0s` instant, one will be synthesized using the target values that are current at the time `Animation.play()` or `Animation.playFromStart()` is called.

It is not possible to change the `keyFrames` of a running `Timeline`. If the value of `keyFrames` is changed for a running `Timeline`, it has to be stopped and started again to pick up the new value.

A simple Timeline can be created like this:

     final Timeline timeline = new Timeline();
     timeline.setCycleCount(2);
     timeline.setAutoReverse(true);
     timeline.getKeyFrames().add(new KeyFrame(Duration.millis(5000),
       new KeyValue (node.translateXProperty(), 25)));
     timeline.play();

This Timeline will run for 10s, animating the node by x axis to value 25 and then back to 0 on the second cycle.

Warning: A running Timeline is being referenced from the FX runtime. Infinite Timeline might result in a memory leak if not stopped properly. All the objects with animated properties would not be garbage collected.

Since:
  JavaFX 2.0
See Also:
  `Animation`, `KeyFrame`, `KeyValue`

- ## Property Summary

  ### Properties inherited from class javafx.animation.Animation

  `autoReverse, currentRate, currentTime, cycleCount, cycleDuration, delay, onFinished, rate, status, totalDuration`

- ## Nested Class Summary

  ## Nested classes/interfaces inherited from class javafx.animation.Animation

  `Animation.Status`

- ## Field Summary

  ### Fields inherited from class javafx.animation.Animation

  `INDEFINITE`

- ## Constructor Summary

  Constructors
  Constructor | Description
  --- | ---
  `Timeline()` | The constructor of `Timeline`.
  `Timeline​(double targetFramerate)` | The constructor of `Timeline`.
  `Timeline​(double targetFramerate, KeyFrame... keyFrames)` | The constructor of `Timeline`.
  `Timeline​(KeyFrame... keyFrames)` | The constructor of `Timeline`.

- ## Method Summary

  Modifier and Type | Method | Description
  --- | --- | ---
  `ObservableList<KeyFrame>` | `getKeyFrames()` | Returns the `KeyFrames` of this `Timeline`.
  `void` | `stop()` | Stops the animation and resets the play head to its initial position.

  ### Methods inherited from class javafx.animation.Animation

  `autoReverseProperty, currentRateProperty, currentTimeProperty, cycleCountProperty, cycleDurationProperty, delayProperty, getCuePoints, getCurrentRate, getCurrentTime, getCycleCount, getCycleDuration, getDelay, getOnFinished, getRate, getStatus, getTargetFramerate, getTotalDuration, isAutoReverse, jumpTo, jumpTo, onFinishedProperty, pause, play, playFrom, playFrom, playFromStart, rateProperty, setAutoReverse, setCycleCount, setCycleDuration, setDelay, setOnFinished, setRate, setStatus, statusProperty, totalDurationProperty`

  ### Methods inherited from class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Constructor Details

  - ### Timeline

    public Timeline​(double targetFramerate, KeyFrame... keyFrames)
    The constructor of `Timeline`. This constructor allows to define a `Animation.targetFramerate`.
    Parameters:
      `targetFramerate` - The custom target frame rate for this `Timeline`
      `keyFrames` - The keyframes of this `Timeline`

  - ### Timeline

    public Timeline​(KeyFrame... keyFrames)
    The constructor of `Timeline`.
    Parameters:
      `keyFrames` - The keyframes of this `Timeline`

  - ### Timeline

    public Timeline​(double targetFramerate)
    The constructor of `Timeline`. This constructor allows to define a `Animation.targetFramerate`.
    Parameters:
      `targetFramerate` - The custom target frame rate for this `Timeline`

  - ### Timeline

    public Timeline()
    The constructor of `Timeline`.

- ## Method Details

  - ### getKeyFrames

    public final ObservableList<KeyFrame> getKeyFrames()
    Returns the `KeyFrames` of this `Timeline`.
    Returns:
      the `KeyFrames`

  - ### stop

    public void stop()
    Stops the animation and resets the play head to its initial position. If the animation is already stopped, this method has no effect.

    Note:

    - `stop()` is an asynchronous call, the `Animation` may not stop immediately.
    Overrides:
      `stop` in class `Animation`