JavaFX - Animações
Em geral, animar um objeto implica em criar a ilusão de seu movimento por meio de uma exibição rápida. No JavaFX, um nó pode ser animado alterando sua propriedade ao longo do tempo. JavaFX fornece um pacote chamadojavafx.animation. Este pacote contém classes que são usadas para animar os nós. Animação é a classe base de todas essas classes.
Usando JavaFX, você pode aplicar animações (transições), como Fade Transition, Fill Transition, Rotate Transition, Scale Transition, Stroke Transition, Translate Transition, Path Transition, Sequential Transition, Pause Transition, Parallel Transitionetc.
Todas essas transições são representadas por classes individuais no pacote javafx.animation.
Para aplicar uma determinada animação a um nó, você deve seguir as etapas abaixo -
Crie um nó necessário usando a classe respectiva.
Instancie a respectiva classe de transição (animação) que deve ser aplicada
Defina as propriedades da transição e
Por fim, reproduza a transição usando o play() método do Animation classe.
Neste capítulo, vamos discutir exemplos de transições básicas (rotação, escala, tradução).
Transição de rotação
A seguir está o programa que demonstra a transição de rotação no JavaFX. Salve este código em um arquivo com o nomeRotateTransitionExample.java.
import javafx.animation.RotateTransition;
import javafx.application.Application;
import static javafx.application.Application.launch;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.paint.Color;
import javafx.scene.shape.Polygon;
import javafx.stage.Stage;
import javafx.util.Duration;
public class RotateTransitionExample extends Application {
@Override
public void start(Stage stage) {
//Creating a hexagon
Polygon hexagon = new Polygon();
//Adding coordinates to the hexagon
hexagon.getPoints().addAll(new Double[]{
200.0, 50.0,
400.0, 50.0,
450.0, 150.0,
400.0, 250.0,
200.0, 250.0,
150.0, 150.0,
});
//Setting the fill color for the hexagon
hexagon.setFill(Color.BLUE);
//Creating a rotate transition
RotateTransition rotateTransition = new RotateTransition();
//Setting the duration for the transition
rotateTransition.setDuration(Duration.millis(1000));
//Setting the node for the transition
rotateTransition.setNode(hexagon);
//Setting the angle of the rotation
rotateTransition.setByAngle(360);
//Setting the cycle count for the transition
rotateTransition.setCycleCount(50);
//Setting auto reverse value to false
rotateTransition.setAutoReverse(false);
//Playing the animation
rotateTransition.play();
//Creating a Group object
Group root = new Group(hexagon);
//Creating a scene object
Scene scene = new Scene(root, 600, 300);
//Setting title to the Stage
stage.setTitle("Rotate transition example ");
//Adding scene to the stage
stage.setScene(scene);
//Displaying the contents of the stage
stage.show();
}
public static void main(String args[]){
launch(args);
}
}
Compile e execute o arquivo java salvo no prompt de comando usando os comandos a seguir.
javac RotateTransitionExample.java
java RotateTransitionExample
Ao ser executado, o programa acima gera uma janela JavaFX conforme mostrado abaixo.
Transição de Escala
A seguir está o programa que demonstra a transição de escala no JavaFX. Salve este código em um arquivo com o nomeScaleTransitionExample.java.
import javafx.animation.ScaleTransition;
import javafx.application.Application;
import static javafx.application.Application.launch;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.paint.Color;
import javafx.scene.shape.Circle;
import javafx.stage.Stage;
import javafx.util.Duration;
public class ScaleTransitionExample extends Application {
@Override
public void start(Stage stage) {
//Drawing a Circle
Circle circle = new Circle();
//Setting the position of the circle
circle.setCenterX(300.0f);
circle.setCenterY(135.0f);
//Setting the radius of the circle
circle.setRadius(50.0f);
//Setting the color of the circle
circle.setFill(Color.BROWN);
//Setting the stroke width of the circle
circle.setStrokeWidth(20);
//Creating scale Transition
ScaleTransition scaleTransition = new ScaleTransition();
//Setting the duration for the transition
scaleTransition.setDuration(Duration.millis(1000));
//Setting the node for the transition
scaleTransition.setNode(circle);
//Setting the dimensions for scaling
scaleTransition.setByY(1.5);
scaleTransition.setByX(1.5);
//Setting the cycle count for the translation
scaleTransition.setCycleCount(50);
//Setting auto reverse value to true
scaleTransition.setAutoReverse(false);
//Playing the animation
scaleTransition.play();
//Creating a Group object
Group root = new Group(circle);
//Creating a scene object
Scene scene = new Scene(root, 600, 300);
//Setting title to the Stage
stage.setTitle("Scale transition example");
//Adding scene to the stage
stage.setScene(scene);
//Displaying the contents of the stage
stage.show();
}
public static void main(String args[]){
launch(args);
}
}
Compile e execute o arquivo java salvo no prompt de comando usando os comandos a seguir.
javac ScaleTransitionExample.java
java ScaleTransitionExample
Ao ser executado, o programa acima gera uma janela JavaFX conforme mostrado abaixo.
Traduzir Transição
A seguir está o programa que demonstra a transição de tradução em JavaFX. Salve este código em um arquivo com o nomeTranslateTransitionExample.java.
import javafx.animation.TranslateTransition;
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.paint.Color;
import javafx.scene.shape.Circle;
import javafx.stage.Stage;
import javafx.util.Duration;
public class TranslateTransitionExample extends Application {
@Override
public void start(Stage stage) {
//Drawing a Circle
Circle circle = new Circle();
//Setting the position of the circle
circle.setCenterX(150.0f);
circle.setCenterY(135.0f);
//Setting the radius of the circle
circle.setRadius(100.0f);
//Setting the color of the circle
circle.setFill(Color.BROWN);
//Setting the stroke width of the circle
circle.setStrokeWidth(20);
//Creating Translate Transition
TranslateTransition translateTransition = new TranslateTransition();
//Setting the duration of the transition
translateTransition.setDuration(Duration.millis(1000));
//Setting the node for the transition
translateTransition.setNode(circle);
//Setting the value of the transition along the x axis.
translateTransition.setByX(300);
//Setting the cycle count for the transition
translateTransition.setCycleCount(50);
//Setting auto reverse value to false
translateTransition.setAutoReverse(false);
//Playing the animation
translateTransition.play();
//Creating a Group object
Group root = new Group(circle);
//Creating a scene object
Scene scene = new Scene(root, 600, 300);
//Setting title to the Stage
stage.setTitle("Translate transition example");
//Adding scene to the stage
stage.setScene(scene);
//Displaying the contents of the stage
stage.show();
}
public static void main(String args[]){
launch(args);
}
}
Compile e execute o arquivo java salvo no prompt de comando usando os comandos a seguir.
javac TranslateTransitionExample.java
java TranslateTransitionExample
Ao ser executado, o programa acima gera uma janela JavaFX conforme mostrado abaixo.
Além disso, o JavaFX fornece classes para aplicar mais transições nos nós. A seguir estão os outros tipos de transições compatíveis com JavaFX.
Transições que afetam os atributos dos nós Fade, Fill, Stroke
Transições que envolvem mais de uma transição básica Sequencial, Paralela, Pausa
Transição que traduz o objeto ao longo do caminho especificado . Transição de caminho