Module javafx.graphics
Package javafx.animation

# Class AnimationTimer

java.lang.Object
javafx.animation.AnimationTimer

public abstract class AnimationTimer extends Object
The class `AnimationTimer` allows to create a timer, that is called in each frame while it is active.

An extending class has to override the method `handle(long)` which will be called in every frame.

The methods `start()` and `stop()` allow to start and stop the timer.

The animation timer runs on the JavaFX Application Thread.

Since:
  JavaFX 2.0

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `AnimationTimer()`
  Creates a new timer.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `abstract void`
  `handle(long now)`
  This method needs to be overridden by extending classes.
  `void`
  `start()`
  Starts the `AnimationTimer`.
  `void`
  `stop()`
  Stops the `AnimationTimer`.

  ### Methods declared in class java.lang.Object

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

- ## Constructor Details

  - ### AnimationTimer

    public AnimationTimer()
    Creates a new timer.

- ## Method Details

  - ### handle

    public abstract void handle(long now)
    This method needs to be overridden by extending classes. It is going to be called in every frame while the `AnimationTimer` is active.
    Parameters:
      `now` - The timestamp of the current frame given in nanoseconds. This value will be the same for all `AnimationTimers` called during one frame.

  - ### start

    public void start()
    Starts the `AnimationTimer`. Once it is started, the `handle(long)` method of this `AnimationTimer` will be called in every frame.

    The `AnimationTimer` can be stopped by calling `stop()`.

    Note: if this method is not called on the JavaFX Application Thread, it is delegated to it automatically. In this case, the call is asynchronous and may not happen immediately.

  - ### stop

    public void stop()
    Stops the `AnimationTimer`. It can be activated again by calling `start()`.

    Note: if this method is not called on the JavaFX Application Thread, it is delegated to it automatically. In this case, the call is asynchronous and may not happen immediately.