# Class PathTransition

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

public final class PathTransition extends Transition
This `Transition` creates a path animation that spans its `duration`. The translation along the path is done by updating the `translateX` and `translateY` variables of the `node`, and the `rotate` variable will get updated if `orientation` is set to `OrientationType.ORTHOGONAL_TO_TANGENT`, at regular intervals.

The animated path is defined by the outline of a shape.

Code Segment Example:

    import javafx.scene.shape.*;
    import javafx.animation.*;

    ...

        Rectangle rect = new Rectangle (100, 40, 100, 100);
        rect.setArcHeight(50);
        rect.setArcWidth(50);
        rect.setFill(Color.VIOLET);

        Path path = new Path();
        path.getElements().add (new MoveTo (0f, 50f));
        path.getElements().add (new CubicCurveTo (40f, 10f, 390f, 240f, 1904, 50f));

        pathTransition.setDuration(Duration.millis(10000));
        pathTransition.setNode(rect);
        pathTransition.setPath(path);
        pathTransition.setOrientation(OrientationType.ORTHOGONAL_TO_TANGENT);
        pathTransition.setCycleCount(4f);
        pathTransition.setAutoReverse(true);

        pathTransition.play();

    ...

Since:
  JavaFX 2.0
See Also:
  - `Transition`
  - `Animation`

- ## Nested Class Summary

  Nested Classes
  Modifier and Type
  Class
  Description
  `static enum`
  `PathTransition.OrientationType`
  Specifies the upright orientation of `node` along the `path`.

  ### Nested classes/interfaces declared in class Animation

  `Animation.Status`

- ## Property Summary

  Properties
  Type
  Property
  Description
  `final ObjectProperty<Duration>`
  `duration`
  The duration of this `Transition`.
  `final ObjectProperty<Node>`
  `node`
  The target node of this `PathTransition`.
  `final ObjectProperty<PathTransition.OrientationType>`
  `orientation`
  Specifies the upright orientation of `node` along the `path`.
  `final ObjectProperty<Shape>`
  `path`
  The shape on which outline the node should be animated.

  ### Properties declared in class Transition

  `interpolator`

  ### 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
  `PathTransition()`
  The constructor of `PathTransition`.
  `PathTransition(Duration duration, Shape path)`
  The constructor of `PathTransition`.
  `PathTransition(Duration duration, Shape path, Node node)`
  The constructor of `PathTransition`.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `final ObjectProperty<Duration>`
  `durationProperty()`
  The duration of this `Transition`.
  `final Duration`
  `getDuration()`
  Gets the value of the `duration` property.
  `final Node`
  `getNode()`
  Gets the value of the `node` property.
  `final PathTransition.OrientationType`
  `getOrientation()`
  Gets the value of the `orientation` property.
  `final Shape`
  `getPath()`
  Gets the value of the `path` property.
  `void`
  `interpolate(double frac)`
  The method `interpolate()` has to be provided by implementations of `Transition`.
  `final ObjectProperty<Node>`
  `nodeProperty()`
  The target node of this `PathTransition`.
  `final ObjectProperty<PathTransition.OrientationType>`
  `orientationProperty()`
  Specifies the upright orientation of `node` along the `path`.
  `final ObjectProperty<Shape>`
  `pathProperty()`
  The shape on which outline the node should be animated.
  `final void`
  `setDuration(Duration value)`
  Sets the value of the `duration` property.
  `final void`
  `setNode(Node value)`
  Sets the value of the `node` property.
  `final void`
  `setOrientation(PathTransition.OrientationType value)`
  Sets the value of the `orientation` property.
  `final void`
  `setPath(Shape value)`
  Sets the value of the `path` property.

  ### Methods declared in class Transition

  `getCachedInterpolator, getInterpolator, getParentTargetNode, interpolatorProperty, setInterpolator`

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

  - ### node

    public final ObjectProperty<Node> nodeProperty
    The target node of this `PathTransition`.

    It is not possible to change the target `node` of a running `PathTransition`. If the value of `node` is changed for a running `PathTransition`, the animation has to be stopped and started again to pick up the new value.

    See Also:
      - `getNode()`
      - `setNode(Node)`
      - `nodeProperty()`

  - ### duration

    public final ObjectProperty<Duration> durationProperty
    The duration of this `Transition`.

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

    Note: While the unit of `duration` is a millisecond, the granularity depends on the underlying operating system and will in general be larger. For example animations on desktop systems usually run with a maximum of 60fps which gives a granularity of ~17 ms. Setting duration to value lower than `Duration.ZERO` will result in `IllegalArgumentException`.

    Default value:
      400ms
    See Also:
      - `getDuration()`
      - `setDuration(Duration)`
      - `durationProperty()`

  - ### path

    public final ObjectProperty<Shape> pathProperty
    The shape on which outline the node should be animated.

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

    Default value:
      null
    See Also:
      - `getPath()`
      - `setPath(Shape)`
      - `pathProperty()`

  - ### orientation

    public final ObjectProperty<PathTransition.OrientationType> orientationProperty
    Specifies the upright orientation of `node` along the `path`. The default orientation is set to `PathTransition.OrientationType.NONE`.

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

    Default value:
      NONE
    See Also:
      - `getOrientation()`
      - `setOrientation(PathTransition.OrientationType)`
      - `orientationProperty()`

- ## Constructor Details

  - ### PathTransition

    public PathTransition(Duration duration, Shape path, Node node)
    The constructor of `PathTransition`.
    Parameters:
      `duration` - The `duration` of this `PathTransition`
      `path` - The `path` of this `PathTransition`
      `node` - The `node` of this `PathTransition`

  - ### PathTransition

    public PathTransition(Duration duration, Shape path)
    The constructor of `PathTransition`.
    Parameters:
      `duration` - The `duration` of this `PathTransition`
      `path` - The `path` of this `PathTransition`

  - ### PathTransition

    public PathTransition()
    The constructor of `PathTransition`.

- ## Method Details

  - ### setNode

    public final void setNode(Node value)
    Sets the value of the `node` property.
    Property description:
      The target node of this `PathTransition`.

      It is not possible to change the target `node` of a running `PathTransition`. If the value of `node` is changed for a running `PathTransition`, the animation has to be stopped and started again to pick up the new value.

    Parameters:
      `value` - the value for the `node` property
    See Also:
      - `getNode()`
      - `nodeProperty()`

  - ### getNode

    public final Node getNode()
    Gets the value of the `node` property.
    Property description:
      The target node of this `PathTransition`.

      It is not possible to change the target `node` of a running `PathTransition`. If the value of `node` is changed for a running `PathTransition`, the animation has to be stopped and started again to pick up the new value.

    Returns:
      the value of the `node` property
    See Also:
      - `setNode(Node)`
      - `nodeProperty()`

  - ### nodeProperty

    public final ObjectProperty<Node> nodeProperty()
    The target node of this `PathTransition`.

    It is not possible to change the target `node` of a running `PathTransition`. If the value of `node` is changed for a running `PathTransition`, the animation has to be stopped and started again to pick up the new value.

    Returns:
      the `node` property
    See Also:
      - `getNode()`
      - `setNode(Node)`

  - ### setDuration

    public final void setDuration(Duration value)
    Sets the value of the `duration` property.
    Property description:
      The duration of this `Transition`.

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

      Note: While the unit of `duration` is a millisecond, the granularity depends on the underlying operating system and will in general be larger. For example animations on desktop systems usually run with a maximum of 60fps which gives a granularity of ~17 ms. Setting duration to value lower than `Duration.ZERO` will result in `IllegalArgumentException`.

    Default value:
      400ms
    Parameters:
      `value` - the value for the `duration` property
    See Also:
      - `getDuration()`
      - `durationProperty()`

  - ### getDuration

    public final Duration getDuration()
    Gets the value of the `duration` property.
    Property description:
      The duration of this `Transition`.

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

      Note: While the unit of `duration` is a millisecond, the granularity depends on the underlying operating system and will in general be larger. For example animations on desktop systems usually run with a maximum of 60fps which gives a granularity of ~17 ms. Setting duration to value lower than `Duration.ZERO` will result in `IllegalArgumentException`.

    Default value:
      400ms
    Returns:
      the value of the `duration` property
    See Also:
      - `setDuration(Duration)`
      - `durationProperty()`

  - ### durationProperty

    public final ObjectProperty<Duration> durationProperty()
    The duration of this `Transition`.

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

    Note: While the unit of `duration` is a millisecond, the granularity depends on the underlying operating system and will in general be larger. For example animations on desktop systems usually run with a maximum of 60fps which gives a granularity of ~17 ms. Setting duration to value lower than `Duration.ZERO` will result in `IllegalArgumentException`.

    Default value:
      400ms
    Returns:
      the `duration` property
    See Also:
      - `getDuration()`
      - `setDuration(Duration)`

  - ### setPath

    public final void setPath(Shape value)
    Sets the value of the `path` property.
    Property description:
      The shape on which outline the node should be animated.

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

    Default value:
      null
    Parameters:
      `value` - the value for the `path` property
    See Also:
      - `getPath()`
      - `pathProperty()`

  - ### getPath

    public final Shape getPath()
    Gets the value of the `path` property.
    Property description:
      The shape on which outline the node should be animated.

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

    Default value:
      null
    Returns:
      the value of the `path` property
    See Also:
      - `setPath(Shape)`
      - `pathProperty()`

  - ### pathProperty

    public final ObjectProperty<Shape> pathProperty()
    The shape on which outline the node should be animated.

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

    Default value:
      null
    Returns:
      the `path` property
    See Also:
      - `getPath()`
      - `setPath(Shape)`

  - ### setOrientation

    public final void setOrientation(PathTransition.OrientationType value)
    Sets the value of the `orientation` property.
    Property description:
      Specifies the upright orientation of `node` along the `path`. The default orientation is set to `PathTransition.OrientationType.NONE`.

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

    Default value:
      NONE
    Parameters:
      `value` - the value for the `orientation` property
    See Also:
      - `getOrientation()`
      - `orientationProperty()`

  - ### getOrientation

    public final PathTransition.OrientationType getOrientation()
    Gets the value of the `orientation` property.
    Property description:
      Specifies the upright orientation of `node` along the `path`. The default orientation is set to `PathTransition.OrientationType.NONE`.

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

    Default value:
      NONE
    Returns:
      the value of the `orientation` property
    See Also:
      - `setOrientation(PathTransition.OrientationType)`
      - `orientationProperty()`

  - ### orientationProperty

    public final ObjectProperty<PathTransition.OrientationType> orientationProperty()
    Specifies the upright orientation of `node` along the `path`. The default orientation is set to `PathTransition.OrientationType.NONE`.

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

    Default value:
      NONE
    Returns:
      the `orientation` property
    See Also:
      - `getOrientation()`
      - `setOrientation(PathTransition.OrientationType)`

  - ### interpolate

    public 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.
    Specified by:
      `interpolate` in class `Transition`
    Parameters:
      `frac` - The relative position