javafx animationtimer
AnimationTimer
is a JavaFX class that provides a simple way to create animations in JavaFX applications. It is a specialized timer that allows developers to define custom actions that are executed on a regular basis, typically 60 times per second, which is the standard refresh rate of most monitors.
The AnimationTimer
class works by providing a handle
method that is called by the JavaFX application thread at each frame of the animation. This method can be overridden by the developer to provide custom animation logic that is executed at each frame.
For example, if you want to create an animation that moves a circle across the screen, you could define a handle
method that updates the position of the circle at each frame based on a given velocity:
public class CircleAnimation extends AnimationTimer { private Circle circle; private double velocity; public CircleAnimation(Circle circle, double velocity) { this.circle = circle; this.velocity = velocity; } @Override public void handle(long now) { double x = circle.getCenterX(); double y = circle.getCenterY(); x += velocity; y += velocity; circle.setCenterX(x); circle.setCenterY(y); } }
In this example, the handle
method updates the position of the circle based on the given velocity, which is passed in through the constructor. This method is called 60 times per second, providing a smooth animation effect.
To start the animation, you would create an instance of the CircleAnimation
class and register it with a Scene
object:
Circle circle = new Circle(50, Color.BLUE); AnimationTimer animation = new CircleAnimation(circle, 5); animation.start(); Group root = new Group(circle); Scene scene = new Scene(root, 400, 400); stage.setScene(scene); stage.show();
This code creates a blue circle, creates an instance of the CircleAnimation
class with a velocity of 5, and registers it with the Scene
object. The AnimationTimer
is then started, which causes the circle to start moving across the screen.