DĂ©pendances Maven JavaFX
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-controls</artifactId>
<version>18</version>
</dependency>
Java TranslateTransition et ScaleTransition
package fr.ronanlefichant.animation;
import javafx.animation.ScaleTransition;
import javafx.animation.TranslateTransition;
import javafx.application.Application;
import javafx.scene.Node;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
import javafx.util.Duration;
/**
* JavaFX App
*/
public class App extends Application {
public static void main(String[] args) {
launch();
}
@Override
public void start(Stage stage) {
Label label = new Label("Animation");
label.setStyle("-fx-font-size: 48");
BounceUpAnimation bounceAnimation = new BounceUpAnimation(label);
Scene scene = new Scene(new StackPane(label), 640, 480);
stage.setScene(scene);
// Quand la fenĂȘtre est affichĂ©e
stage.setOnShown(event -> {
bounceAnimation.play();
});
stage.show();
}
class BounceUpAnimation {
private Node node;
private TranslateTransition firstBounce;
private ScaleTransition firstScaleBounce;
/**
* Animation rebond
*
* @param node Le noeud Ă animer
*/
public BounceUpAnimation(Node node) {
this.node = node;
initAnimation();
}
/**
* Création de l'animation
*/
private void initAnimation() {
// Le premier rebond de -50 (vers le haut)
firstBounce = createBounce(-50);
// Lors du premier rebond le noeud s'agrandit
firstScaleBounce = createScaleBounce(0.5);
// Le second rebond de -30 (moins haut que le premier rebond)
TranslateTransition secondBounce = createBounce(-30);
// Lors du premier rebond le noeud s'agrandit 0.25
ScaleTransition secondScaleBounce = createScaleBounce(0.25);
// Quand le premier rebond est terminé
firstBounce.setOnFinished(event -> {
// Joue le deuxiĂšme rebond
secondBounce.play();
secondScaleBounce.play();
});
}
/**
* @param value Valeur du rebond pour le noeud - Un nombre nĂ©gatif correspond Ă
* un mouvement vers le haut
* @return La Transition
*/
private TranslateTransition createBounce(double value) {
TranslateTransition translateTransition = new TranslateTransition();
translateTransition.setDuration(Duration.millis(300));
translateTransition.setNode(node);
translateTransition.setByY(value);
translateTransition.setAutoReverse(true);
translateTransition.setCycleCount(2);
return translateTransition;
}
/**
* @param value Valeur d'agrandissement pour le noeud - Un nombre positif
* correspond Ă un agrandissement
* @return
*/
private ScaleTransition createScaleBounce(double value) {
ScaleTransition scaleTransition = new ScaleTransition();
scaleTransition.setDuration(Duration.millis(300));
scaleTransition.setNode(node);
scaleTransition.setByY(value);
scaleTransition.setAutoReverse(true);
scaleTransition.setCycleCount(2);
return scaleTransition;
}
/**
* Joue l'animation
*/
public void play() {
firstBounce.play();
firstScaleBounce.play();
}
}
}
Commentaires
Enregistrer un commentaire