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 Detail

    - #### 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 Detail

    - #### 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 not currently running, this method has no effect.

      Note:

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