- java.lang.Object
-
- javafx.animation.Animation
-
- Direct Known Subclasses:
Timeline
,Transition
public abstract class Animation extends Object
The classAnimation
provides the core functionality of all animations used in the JavaFX runtime.An animation can run in a loop by setting
cycleCount
. To make an animation run back and forth while looping, set theautoReverse
-flag.Call
play()
orplayFromStart()
to play anAnimation
. TheAnimation
progresses in the direction and speed specified byrate
, and stops when its duration is elapsed. AnAnimation
with indefinite duration (acycleCount
ofINDEFINITE
) runs repeatedly until thestop()
method is explicitly called, which will stop the runningAnimation
and reset its play head to the initial position.An
Animation
can be paused by callingpause()
, and the nextplay()
call will resume theAnimation
from where it was paused.An
Animation
's play head can be randomly positioned, whether it is running or not. If theAnimation
is running, the play head jumps to the specified position immediately and continues playing from new position. If theAnimation
is not running, the nextplay()
will start theAnimation
from the specified position.Inverting the value of
rate
toggles the play direction.- Since:
- JavaFX 2.0
- See Also:
Timeline
,Transition
-
-
Property Summary
Properties Type Property Description BooleanProperty
autoReverse
Defines whether thisAnimation
reverses direction on alternating cycles.ReadOnlyDoubleProperty
currentRate
Read-only variable to indicate current direction/speed at which theAnimation
is being played.ReadOnlyObjectProperty<Duration>
currentTime
Defines theAnimation
's play head position.IntegerProperty
cycleCount
Defines the number of cycles in this animation.ReadOnlyObjectProperty<Duration>
cycleDuration
Read-only variable to indicate the duration of one cycle of thisAnimation
: the time it takes to play from time 0 to the end of the Animation (at the defaultrate
of 1.0).ObjectProperty<Duration>
delay
Delays the start of an animation.ObjectProperty<EventHandler<ActionEvent>>
onFinished
The action to be executed at the conclusion of thisAnimation
.DoubleProperty
rate
Defines the direction/speed at which theAnimation
is expected to be played.ReadOnlyObjectProperty<Animation.Status>
status
The status of theAnimation
.ReadOnlyObjectProperty<Duration>
totalDuration
Read-only variable to indicate the total duration of thisAnimation
, including repeats.
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
Animation.Status
The possible states forstatus
.
-
Field Summary
Fields Modifier and Type Field Description static int
INDEFINITE
Used to specify an animation that repeats indefinitely, until thestop()
method is called.
-
Method Summary
Modifier and Type Method Description BooleanProperty
autoReverseProperty()
Defines whether thisAnimation
reverses direction on alternating cycles.ReadOnlyDoubleProperty
currentRateProperty()
Read-only variable to indicate current direction/speed at which theAnimation
is being played.ReadOnlyObjectProperty<Duration>
currentTimeProperty()
Defines theAnimation
's play head position.IntegerProperty
cycleCountProperty()
Defines the number of cycles in this animation.ReadOnlyObjectProperty<Duration>
cycleDurationProperty()
Read-only variable to indicate the duration of one cycle of thisAnimation
: the time it takes to play from time 0 to the end of the Animation (at the defaultrate
of 1.0).ObjectProperty<Duration>
delayProperty()
Delays the start of an animation.ObservableMap<String,Duration>
getCuePoints()
The cue points can be used to mark important positions of theAnimation
.double
getCurrentRate()
Gets the value of the property currentRate.Duration
getCurrentTime()
Gets the value of the property currentTime.int
getCycleCount()
Gets the value of the property cycleCount.Duration
getCycleDuration()
Gets the value of the property cycleDuration.Duration
getDelay()
Gets the value of the property delay.EventHandler<ActionEvent>
getOnFinished()
Gets the value of the property onFinished.double
getRate()
Gets the value of the property rate.Animation.Status
getStatus()
Gets the value of the property status.double
getTargetFramerate()
The target framerate is the maximum framerate at which thisAnimation
will run, in frames per second.Duration
getTotalDuration()
Gets the value of the property totalDuration.boolean
isAutoReverse()
Gets the value of the property autoReverse.void
jumpTo(String cuePoint)
Jumps to a predefined position in thisAnimation
.void
jumpTo(Duration time)
Jumps to a given position in thisAnimation
.ObjectProperty<EventHandler<ActionEvent>>
onFinishedProperty()
The action to be executed at the conclusion of thisAnimation
.void
pause()
Pauses the animation.void
play()
PlaysAnimation
from current position in the direction indicated byrate
.void
playFrom(String cuePoint)
A convenience method to play thisAnimation
from a predefined position.void
playFrom(Duration time)
A convenience method to play thisAnimation
from a specific position.void
playFromStart()
Plays anAnimation
from initial position in forward direction.DoubleProperty
rateProperty()
Defines the direction/speed at which theAnimation
is expected to be played.void
setAutoReverse(boolean value)
Sets the value of the property autoReverse.void
setCycleCount(int value)
Sets the value of the property cycleCount.protected void
setCycleDuration(Duration value)
Sets the value of the property cycleDuration.void
setDelay(Duration value)
Sets the value of the property delay.void
setOnFinished(EventHandler<ActionEvent> value)
Sets the value of the property onFinished.void
setRate(double value)
Sets the value of the property rate.protected void
setStatus(Animation.Status value)
Sets the value of the property status.ReadOnlyObjectProperty<Animation.Status>
statusProperty()
The status of theAnimation
.void
stop()
Stops the animation and resets the play head to its initial position.ReadOnlyObjectProperty<Duration>
totalDurationProperty()
Read-only variable to indicate the total duration of thisAnimation
, including repeats.
-
-
-
Property Detail
-
rate
public final DoubleProperty rateProperty
Defines the direction/speed at which theAnimation
is expected to be played.The absolute value of
rate
indicates the speed at which theAnimation
is to be played, while the sign ofrate
indicates the direction. A positive value ofrate
indicates forward play, a negative value indicates backward play and0.0
to stop a runningAnimation
.Rate
1.0
is normal play,2.0
is 2 time normal,-1.0
is backwards, etc.Inverting the rate of a running
Animation
will cause theAnimation
to reverse direction in place and play back over the portion of theAnimation
that has already elapsed.- Default value:
- 1.0
- See Also:
getRate()
,setRate(double)
-
currentRate
public final ReadOnlyDoubleProperty currentRateProperty
Read-only variable to indicate current direction/speed at which theAnimation
is being played.currentRate
is not necessarily equal torate
.currentRate
is set to0.0
when animation is paused or stopped.currentRate
may also point in the opposite direction ofrate
during reverse cycles whenautoReverse
istrue
.- Default value:
- 0.0
- See Also:
getCurrentRate()
-
cycleDuration
public final ReadOnlyObjectProperty<Duration> cycleDurationProperty
Read-only variable to indicate the duration of one cycle of thisAnimation
: the time it takes to play from time 0 to the end of the Animation (at the defaultrate
of 1.0).- Default value:
- 0ms
- See Also:
getCycleDuration()
,setCycleDuration(Duration)
-
totalDuration
public final ReadOnlyObjectProperty<Duration> totalDurationProperty
Read-only variable to indicate the total duration of thisAnimation
, including repeats. AAnimation
with acycleCount
ofAnimation.INDEFINITE
will have atotalDuration
ofDuration.INDEFINITE
.This is set to cycleDuration * cycleCount.
- Default value:
- 0ms
- See Also:
getTotalDuration()
-
currentTime
public final ReadOnlyObjectProperty<Duration> currentTimeProperty
Defines theAnimation
's play head position.- Default value:
- 0ms
- See Also:
getCurrentTime()
-
delay
public final ObjectProperty<Duration> delayProperty
Delays the start of an animation. Cannot be negative. Setting to a negative number will result inIllegalArgumentException
.- Default value:
- 0ms
- See Also:
getDelay()
,setDelay(Duration)
-
cycleCount
public final IntegerProperty cycleCountProperty
Defines the number of cycles in this animation. ThecycleCount
may beINDEFINITE
for animations that repeat indefinitely, but must otherwise be > 0.It is not possible to change the
cycleCount
of a runningAnimation
. If the value ofcycleCount
is changed for a runningAnimation
, the animation has to be stopped and started again to pick up the new value.- Default value:
- 1
- See Also:
getCycleCount()
,setCycleCount(int)
-
autoReverse
public final BooleanProperty autoReverseProperty
Defines whether thisAnimation
reverses direction on alternating cycles. Iftrue
, theAnimation
will proceed forward on the first cycle, then reverses on the second cycle, and so on. Otherwise, animation will loop such that each cycle proceeds forward from the start. It is not possible to change theautoReverse
flag of a runningAnimation
. If the value ofautoReverse
is changed for a runningAnimation
, the animation has to be stopped and started again to pick up the new value.- Default value:
- false
- See Also:
isAutoReverse()
,setAutoReverse(boolean)
-
status
public final ReadOnlyObjectProperty<Animation.Status> statusProperty
The status of theAnimation
. AnAnimation
can be in one of three states:Animation.Status.STOPPED
,Animation.Status.PAUSED
orAnimation.Status.RUNNING
.- See Also:
getStatus()
,setStatus(Animation.Status)
-
onFinished
public final ObjectProperty<EventHandler<ActionEvent>> onFinishedProperty
The action to be executed at the conclusion of thisAnimation
.- Default value:
- null
- See Also:
getOnFinished()
,setOnFinished(EventHandler)
-
-
Field Detail
-
INDEFINITE
public static final int INDEFINITE
Used to specify an animation that repeats indefinitely, until thestop()
method is called.- See Also:
- Constant Field Values
-
-
Constructor Detail
-
Animation
protected Animation(double targetFramerate)
The constructor ofAnimation
. This constructor allows to define a target framerate.- Parameters:
targetFramerate
- The custom target frame rate for thisAnimation
- See Also:
getTargetFramerate()
-
Animation
protected Animation()
The constructor ofAnimation
.
-
-
Method Detail
-
setRate
public final void setRate(double value)
Sets the value of the property rate.- Property description:
- Defines the direction/speed at which the
Animation
is expected to be played.The absolute value of
rate
indicates the speed at which theAnimation
is to be played, while the sign ofrate
indicates the direction. A positive value ofrate
indicates forward play, a negative value indicates backward play and0.0
to stop a runningAnimation
.Rate
1.0
is normal play,2.0
is 2 time normal,-1.0
is backwards, etc.Inverting the rate of a running
Animation
will cause theAnimation
to reverse direction in place and play back over the portion of theAnimation
that has already elapsed. - Default value:
- 1.0
-
getRate
public final double getRate()
Gets the value of the property rate.- Property description:
- Defines the direction/speed at which the
Animation
is expected to be played.The absolute value of
rate
indicates the speed at which theAnimation
is to be played, while the sign ofrate
indicates the direction. A positive value ofrate
indicates forward play, a negative value indicates backward play and0.0
to stop a runningAnimation
.Rate
1.0
is normal play,2.0
is 2 time normal,-1.0
is backwards, etc.Inverting the rate of a running
Animation
will cause theAnimation
to reverse direction in place and play back over the portion of theAnimation
that has already elapsed. - Default value:
- 1.0
-
rateProperty
public final DoubleProperty rateProperty()
Defines the direction/speed at which theAnimation
is expected to be played.The absolute value of
rate
indicates the speed at which theAnimation
is to be played, while the sign ofrate
indicates the direction. A positive value ofrate
indicates forward play, a negative value indicates backward play and0.0
to stop a runningAnimation
.Rate
1.0
is normal play,2.0
is 2 time normal,-1.0
is backwards, etc.Inverting the rate of a running
Animation
will cause theAnimation
to reverse direction in place and play back over the portion of theAnimation
that has already elapsed.- Default value:
- 1.0
- See Also:
getRate()
,setRate(double)
-
getCurrentRate
public final double getCurrentRate()
Gets the value of the property currentRate.- Property description:
- Read-only variable to indicate current direction/speed at which the
Animation
is being played.currentRate
is not necessarily equal torate
.currentRate
is set to0.0
when animation is paused or stopped.currentRate
may also point in the opposite direction ofrate
during reverse cycles whenautoReverse
istrue
. - Default value:
- 0.0
-
currentRateProperty
public final ReadOnlyDoubleProperty currentRateProperty()
Read-only variable to indicate current direction/speed at which theAnimation
is being played.currentRate
is not necessarily equal torate
.currentRate
is set to0.0
when animation is paused or stopped.currentRate
may also point in the opposite direction ofrate
during reverse cycles whenautoReverse
istrue
.- Default value:
- 0.0
- See Also:
getCurrentRate()
-
setCycleDuration
protected final void setCycleDuration(Duration value)
Sets the value of the property cycleDuration.- Property description:
- Read-only variable to indicate the duration of one cycle of this
Animation
: the time it takes to play from time 0 to the end of the Animation (at the defaultrate
of 1.0). - Default value:
- 0ms
-
getCycleDuration
public final Duration getCycleDuration()
Gets the value of the property cycleDuration.- Property description:
- Read-only variable to indicate the duration of one cycle of this
Animation
: the time it takes to play from time 0 to the end of the Animation (at the defaultrate
of 1.0). - Default value:
- 0ms
-
cycleDurationProperty
public final ReadOnlyObjectProperty<Duration> cycleDurationProperty()
Read-only variable to indicate the duration of one cycle of thisAnimation
: the time it takes to play from time 0 to the end of the Animation (at the defaultrate
of 1.0).- Default value:
- 0ms
- See Also:
getCycleDuration()
,setCycleDuration(Duration)
-
getTotalDuration
public final Duration getTotalDuration()
Gets the value of the property totalDuration.- Property description:
- Read-only variable to indicate the total duration of this
Animation
, including repeats. AAnimation
with acycleCount
ofAnimation.INDEFINITE
will have atotalDuration
ofDuration.INDEFINITE
.This is set to cycleDuration * cycleCount.
- Default value:
- 0ms
-
totalDurationProperty
public final ReadOnlyObjectProperty<Duration> totalDurationProperty()
Read-only variable to indicate the total duration of thisAnimation
, including repeats. AAnimation
with acycleCount
ofAnimation.INDEFINITE
will have atotalDuration
ofDuration.INDEFINITE
.This is set to cycleDuration * cycleCount.
- Default value:
- 0ms
- See Also:
getTotalDuration()
-
getCurrentTime
public final Duration getCurrentTime()
Gets the value of the property currentTime.- Property description:
- Defines the
Animation
's play head position. - Default value:
- 0ms
-
currentTimeProperty
public final ReadOnlyObjectProperty<Duration> currentTimeProperty()
Defines theAnimation
's play head position.- Default value:
- 0ms
- See Also:
getCurrentTime()
-
setDelay
public final void setDelay(Duration value)
Sets the value of the property delay.- Property description:
- Delays the start of an animation.
Cannot be negative. Setting to a negative number will result in
IllegalArgumentException
. - Default value:
- 0ms
-
getDelay
public final Duration getDelay()
Gets the value of the property delay.- Property description:
- Delays the start of an animation.
Cannot be negative. Setting to a negative number will result in
IllegalArgumentException
. - Default value:
- 0ms
-
delayProperty
public final ObjectProperty<Duration> delayProperty()
Delays the start of an animation. Cannot be negative. Setting to a negative number will result inIllegalArgumentException
.- Default value:
- 0ms
- See Also:
getDelay()
,setDelay(Duration)
-
setCycleCount
public final void setCycleCount(int value)
Sets the value of the property cycleCount.- Property description:
- Defines the number of cycles in this animation. The
cycleCount
may beINDEFINITE
for animations that repeat indefinitely, but must otherwise be > 0.It is not possible to change the
cycleCount
of a runningAnimation
. If the value ofcycleCount
is changed for a runningAnimation
, the animation has to be stopped and started again to pick up the new value. - Default value:
- 1
-
getCycleCount
public final int getCycleCount()
Gets the value of the property cycleCount.- Property description:
- Defines the number of cycles in this animation. The
cycleCount
may beINDEFINITE
for animations that repeat indefinitely, but must otherwise be > 0.It is not possible to change the
cycleCount
of a runningAnimation
. If the value ofcycleCount
is changed for a runningAnimation
, the animation has to be stopped and started again to pick up the new value. - Default value:
- 1
-
cycleCountProperty
public final IntegerProperty cycleCountProperty()
Defines the number of cycles in this animation. ThecycleCount
may beINDEFINITE
for animations that repeat indefinitely, but must otherwise be > 0.It is not possible to change the
cycleCount
of a runningAnimation
. If the value ofcycleCount
is changed for a runningAnimation
, the animation has to be stopped and started again to pick up the new value.- Default value:
- 1
- See Also:
getCycleCount()
,setCycleCount(int)
-
setAutoReverse
public final void setAutoReverse(boolean value)
Sets the value of the property autoReverse.- Property description:
- Defines whether this
Animation
reverses direction on alternating cycles. Iftrue
, theAnimation
will proceed forward on the first cycle, then reverses on the second cycle, and so on. Otherwise, animation will loop such that each cycle proceeds forward from the start. It is not possible to change theautoReverse
flag of a runningAnimation
. If the value ofautoReverse
is changed for a runningAnimation
, the animation has to be stopped and started again to pick up the new value. - Default value:
- false
-
isAutoReverse
public final boolean isAutoReverse()
Gets the value of the property autoReverse.- Property description:
- Defines whether this
Animation
reverses direction on alternating cycles. Iftrue
, theAnimation
will proceed forward on the first cycle, then reverses on the second cycle, and so on. Otherwise, animation will loop such that each cycle proceeds forward from the start. It is not possible to change theautoReverse
flag of a runningAnimation
. If the value ofautoReverse
is changed for a runningAnimation
, the animation has to be stopped and started again to pick up the new value. - Default value:
- false
-
autoReverseProperty
public final BooleanProperty autoReverseProperty()
Defines whether thisAnimation
reverses direction on alternating cycles. Iftrue
, theAnimation
will proceed forward on the first cycle, then reverses on the second cycle, and so on. Otherwise, animation will loop such that each cycle proceeds forward from the start. It is not possible to change theautoReverse
flag of a runningAnimation
. If the value ofautoReverse
is changed for a runningAnimation
, the animation has to be stopped and started again to pick up the new value.- Default value:
- false
- See Also:
isAutoReverse()
,setAutoReverse(boolean)
-
setStatus
protected final void setStatus(Animation.Status value)
Sets the value of the property status.- Property description:
- The status of the
Animation
. AnAnimation
can be in one of three states:Animation.Status.STOPPED
,Animation.Status.PAUSED
orAnimation.Status.RUNNING
.
-
getStatus
public final Animation.Status getStatus()
Gets the value of the property status.- Property description:
- The status of the
Animation
. AnAnimation
can be in one of three states:Animation.Status.STOPPED
,Animation.Status.PAUSED
orAnimation.Status.RUNNING
.
-
statusProperty
public final ReadOnlyObjectProperty<Animation.Status> statusProperty()
The status of theAnimation
. AnAnimation
can be in one of three states:Animation.Status.STOPPED
,Animation.Status.PAUSED
orAnimation.Status.RUNNING
.- See Also:
getStatus()
,setStatus(Animation.Status)
-
getTargetFramerate
public final double getTargetFramerate()
The target framerate is the maximum framerate at which thisAnimation
will run, in frames per second. This can be used, for example, to keep particularly complexAnimations
from over-consuming system resources. By default, anAnimation
's framerate is not explicitly limited, meaning theAnimation
will run at an optimal framerate for the underlying platform.- Returns:
- the target framerate
-
setOnFinished
public final void setOnFinished(EventHandler<ActionEvent> value)
Sets the value of the property onFinished.- Property description:
- The action to be executed at the conclusion of this
Animation
. - Default value:
- null
-
getOnFinished
public final EventHandler<ActionEvent> getOnFinished()
Gets the value of the property onFinished.- Property description:
- The action to be executed at the conclusion of this
Animation
. - Default value:
- null
-
onFinishedProperty
public final ObjectProperty<EventHandler<ActionEvent>> onFinishedProperty()
The action to be executed at the conclusion of thisAnimation
.- Default value:
- null
- See Also:
getOnFinished()
,setOnFinished(EventHandler)
-
getCuePoints
public final ObservableMap<String,Duration> getCuePoints()
The cue points can be used to mark important positions of theAnimation
. Once a cue point was defined, it can be used as an argument ofjumpTo()
andplayFrom()
to move to the associated position quickly.Every
Animation
has two predefined cue points"start"
and"end"
, which are set at the start respectively the end of theAnimation
. The predefined cuepoints do not appear in the map, attempts to override them have no effect.Another option to define a cue point in a
Animation
is to set thename
property of aKeyFrame
.- Returns:
ObservableMap
of cue points
-
jumpTo
public void jumpTo(Duration time)
Jumps to a given position in thisAnimation
. If the given time is less thanDuration.ZERO
, this method will jump to the start of the animation. If the given time is larger than the duration of thisAnimation
, this method will jump to the end.- Parameters:
time
- the new position- Throws:
NullPointerException
- iftime
isnull
IllegalArgumentException
- iftime
isDuration.UNKNOWN
IllegalStateException
- if embedded in another animation, such asSequentialTransition
orParallelTransition
-
jumpTo
public void jumpTo(String cuePoint)
Jumps to a predefined position in thisAnimation
. This method looks for an entry in cue points and jumps to the associated position, if it finds one.If the cue point is behind the end of this
Animation
, callingjumpTo
will result in a jump to the end. If the cue point has a negativeDuration
it will result in a jump to the beginning. If the cue point has a value ofDuration.UNKNOWN
callingjumpTo
will have no effect for this cue point.There are two predefined cue points
"start"
and"end"
which are defined to be at the start respectively the end of thisAnimation
.- Parameters:
cuePoint
- the name of the cue point- Throws:
NullPointerException
- ifcuePoint
isnull
IllegalStateException
- if embedded in another animation, such asSequentialTransition
orParallelTransition
- See Also:
getCuePoints()
-
playFrom
public void playFrom(String cuePoint)
A convenience method to play thisAnimation
from a predefined position. The position has to be predefined in cue points. Calling this method is equivalent toanimation.jumpTo(cuePoint); animation.play();
playFromStart()
calling this method will not change the playing direction of thisAnimation
.- Parameters:
cuePoint
- name of the cue point- Throws:
NullPointerException
- ifcuePoint
isnull
IllegalStateException
- if embedded in another animation, such asSequentialTransition
orParallelTransition
- See Also:
getCuePoints()
-
playFrom
public void playFrom(Duration time)
A convenience method to play thisAnimation
from a specific position. Calling this method is equivalent toanimation.jumpTo(time); animation.play();
playFromStart()
calling this method will not change the playing direction of thisAnimation
.- Parameters:
time
- position where to play from- Throws:
NullPointerException
- iftime
isnull
IllegalArgumentException
- iftime
isDuration.UNKNOWN
IllegalStateException
- if embedded in another animation, such asSequentialTransition
orParallelTransition
-
play
public void play()
PlaysAnimation
from current position in the direction indicated byrate
. If theAnimation
is running, it has no effect.When
rate
> 0 (forward play), if anAnimation
is already positioned at the end, the first cycle will not be played, it is considered to have already finished. This also applies to a backward (rate
< 0) cycle if anAnimation
is positioned at the beginning. However, if theAnimation
hascycleCount
> 1, following cycle(s) will be played as usual.When the
Animation
reaches the end, theAnimation
is stopped and the play head remains at the end.To play an
Animation
backwards from the end:
animation.setRate(negative rate);
animation.jumpTo(overall duration of animation);
animation.play();
Note:
play()
is an asynchronous call, theAnimation
may not start immediately.
- Throws:
IllegalStateException
- if embedded in another animation, such asSequentialTransition
orParallelTransition
-
playFromStart
public void playFromStart()
Plays anAnimation
from initial position in forward direction.It is equivalent to
animation.stop();
animation.setRate = setRate(Math.abs(animation.getRate()));
animation.jumpTo(Duration.ZERO);
animation.play();
Note:
playFromStart()
is an asynchronous call,Animation
may not start immediately.
- Throws:
IllegalStateException
- if embedded in another animation, such asSequentialTransition
orParallelTransition
-
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, theAnimation
may not stop immediately.
- Throws:
IllegalStateException
- if embedded in another animation, such asSequentialTransition
orParallelTransition
-
pause
public void pause()
Pauses the animation. If the animation is not currently running, this method has no effect.Note:
pause()
is an asynchronous call, theAnimation
may not pause immediately.
- Throws:
IllegalStateException
- if embedded in another animation, such asSequentialTransition
orParallelTransition
-
-