Module javafx.graphics
Package javafx.animation

## Class Transition

- java.lang.Object
- - javafx.animation.Animation
  - - javafx.animation.Transition

- Direct Known Subclasses:
    `FadeTransition`, `FillTransition`, `ParallelTransition`, `PathTransition`, `PauseTransition`, `RotateTransition`, `ScaleTransition`, `SequentialTransition`, `StrokeTransition`, `TranslateTransition`

      public abstract class Transition
      extends Animation

  An abstract class that contains the basic functionalities required by all `Transition` based animations, such as `PathTransition` and `RotateTransition`.

  This class offers a simple framework to define animation. It provides all the basic functionality defined in `Animation`. `Transition` requires the implementation of a method `interpolate(double)` which is the called in each frame, while the `Transition` is running.

  In addition an extending class needs to set the duration of a single cycle with `Animation.setCycleDuration(javafx.util.Duration)`. This duration is usually set by the user via a duration property (as in `duration`) for example. But it can also be calculated by the extending class as is done in `ParallelTransition` and `FadeTransition`.

  Below is a simple example. It creates a small animation that updates the `text` property of a `Text` node. It starts with an empty `String` and adds gradually letter by letter until the full `String` was set when the animation finishes.

       final String content = "Lorem ipsum";
       final Text text = new Text(10, 20, "");

       final Animation animation = new Transition() {
           {
               setCycleDuration(Duration.millis(2000));
           }

           protected void interpolate(double frac) {
               final int length = content.length();
               final int n = Math.round(length * (float) frac);
               text.setText(content.substring(0, n));
           }

       };

       animation.play();

  Since:
    JavaFX 2.0
  See Also:
    `Animation`

- - ### Property Summary

    Properties
    Type | Property | Description
    --- | --- | ---
    `ObjectProperty<Interpolator>` | `interpolator` | Controls the timing for acceleration and deceleration at each `Transition` cycle.

    - ### 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
    --- | ---
    `Transition()` | The constructor of `Transition`.
    `Transition​(double targetFramerate)` | The constructor of `Transition`.

  - ### Method Summary

    All Methods Instance Methods Abstract Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `protected Interpolator` | `getCachedInterpolator()` | Returns the `Interpolator`, that was set when the `Transition` was started.
    `Interpolator` | `getInterpolator()` | Gets the value of the property interpolator.
    `protected Node` | `getParentTargetNode()` | Returns the first non-`null` target `Node` in the parent hierarchy of this `Transition`, or `null` if such a node is not found.
    `protected abstract void` | `interpolate​(double frac)` | The method `interpolate()` has to be provided by implementations of `Transition`.
    `ObjectProperty<Interpolator>` | `interpolatorProperty()` | Controls the timing for acceleration and deceleration at each `Transition` cycle.
    `void` | `setInterpolator​(Interpolator value)` | Sets the value of the property interpolator.

    - ### 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, stop, totalDurationProperty`

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

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

- - ### Property Detail

    - #### interpolator

          public final ObjectProperty<Interpolator> interpolatorProperty

      Controls the timing for acceleration and deceleration at each `Transition` cycle.

      This may only be changed prior to starting the transition or after the transition has ended. If the value of `interpolator` is changed for a running `Transition`, the animation has to be stopped and started again to pick up the new value.

      Default interpolator is set to `Interpolator.EASE_BOTH`.

      Default value:
        EASE_BOTH
      See Also:
        `getInterpolator()`, `setInterpolator(Interpolator)`

  - ### Constructor Detail

    - #### Transition

          public Transition​(double targetFramerate)

      The constructor of `Transition`. This constructor allows to define a `target framerate`.
      Parameters:
        `targetFramerate` - The custom target frame rate for this `Transition`

    - #### Transition

          public Transition()

      The constructor of `Transition`.

  - ### Method Detail

    - #### setInterpolator

          public final void setInterpolator​(Interpolator value)

      Sets the value of the property interpolator.
      Property description:
        Controls the timing for acceleration and deceleration at each `Transition` cycle.

        This may only be changed prior to starting the transition or after the transition has ended. If the value of `interpolator` is changed for a running `Transition`, the animation has to be stopped and started again to pick up the new value.

        Default interpolator is set to `Interpolator.EASE_BOTH`.

      Default value:
        EASE_BOTH

    - #### getInterpolator

          public final Interpolator getInterpolator()

      Gets the value of the property interpolator.
      Property description:
        Controls the timing for acceleration and deceleration at each `Transition` cycle.

        This may only be changed prior to starting the transition or after the transition has ended. If the value of `interpolator` is changed for a running `Transition`, the animation has to be stopped and started again to pick up the new value.

        Default interpolator is set to `Interpolator.EASE_BOTH`.

      Default value:
        EASE_BOTH

    - #### interpolatorProperty

          public final ObjectProperty<Interpolator> interpolatorProperty()

      Controls the timing for acceleration and deceleration at each `Transition` cycle.

      This may only be changed prior to starting the transition or after the transition has ended. If the value of `interpolator` is changed for a running `Transition`, the animation has to be stopped and started again to pick up the new value.

      Default interpolator is set to `Interpolator.EASE_BOTH`.

      Default value:
        EASE_BOTH
      See Also:
        `getInterpolator()`, `setInterpolator(Interpolator)`

    - #### getCachedInterpolator

          protected Interpolator getCachedInterpolator()

      Returns the `Interpolator`, that was set when the `Transition` was started. Changing the `interpolator` of a running `Transition` should have no immediate effect. Instead the running `Transition` should continue to use the original `Interpolator` until it is stopped and started again.
      Returns:
        the `Interpolator` that was set when this `Transition` was started

    - #### getParentTargetNode

          protected Node getParentTargetNode()

      Returns the first non-`null` target `Node` in the parent hierarchy of this `Transition`, or `null` if such a node is not found.

      A parent animation is one that can have child animations. Examples are `SequentialTransition` and `ParallelTransition`. A parent animation can also be a child of another parent animation.

      Note that if this `Transition` has a target node set and is not a parent animation, it will be ignored during the call as this method only queries parent animations.

      Returns:
        the target `Node`

    - #### interpolate

          protected abstract void interpolate​(double frac)

      The method `interpolate()` has to be provided by implementations of `Transition`. While a `Transition` is running, this method is called in every frame. The parameter defines the current position with the animation. At the start, the fraction will be `0.0` and at the end it will be `1.0`. How the parameter increases, depends on the `interpolator`, e.g. if the `interpolator` is `Interpolator.LINEAR`, the fraction will increase linear. This method must not be called by the user directly.
      Parameters:
        `frac` - The relative position