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

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