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

- ## Nested Class Summary

  ### Nested classes/interfaces declared in class Animation

  `Animation.Status`

- ## Property Summary

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

  ### Properties declared in class Animation

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

- ## Field Summary

  ### Fields declared in class Animation

  `INDEFINITE`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `Transition()`
  The constructor of `Transition`.
  `Transition(double targetFramerate)`
  The constructor of `Transition`.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `protected Interpolator`
  `getCachedInterpolator()`
  Returns the `Interpolator`, that was set when the `Transition` was started.
  `final Interpolator`
  `getInterpolator()`
  Gets the value of the `interpolator` property.
  `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`.
  `final ObjectProperty<Interpolator>`
  `interpolatorProperty()`
  Controls the timing for acceleration and deceleration at each `Transition` cycle.
  `final void`
  `setInterpolator(Interpolator value)`
  Sets the value of the `interpolator` property.

  ### Methods declared in class 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 declared in class Object

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

- ## Property Details

  - ### 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)`
      - `interpolatorProperty()`

- ## Constructor Details

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

  - ### setInterpolator

    public final void setInterpolator(Interpolator value)
    Sets the value of the `interpolator` property.
    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
    Parameters:
      `value` - the value for the `interpolator` property
    See Also:
      - `getInterpolator()`
      - `interpolatorProperty()`

  - ### getInterpolator

    public final Interpolator getInterpolator()
    Gets the value of the `interpolator` property.
    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
    Returns:
      the value of the `interpolator` property
    See Also:
      - `setInterpolator(Interpolator)`
      - `interpolatorProperty()`

  - ### 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
    Returns:
      the `interpolator` property
    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