Monday, May 19, 2014

JavaFX 8 RotateTransition

Example of JavaFX 8 RotateTransition:


package javafx8_animation;

import javafx.animation.RotateTransition;
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.input.MouseEvent;
import javafx.scene.paint.Color;
import javafx.scene.paint.CycleMethod;
import javafx.scene.paint.LinearGradient;
import javafx.scene.paint.Stop;
import javafx.scene.shape.Rectangle;
import javafx.stage.Stage;
import javafx.util.Duration;

/**
 *
 * @web java-buddy.blogspot.com
 */
public class JavaFX8_Animation extends Application {
    
    @Override
    public void start(Stage primaryStage) {
        Group root = new Group();
        Scene scene = new Scene(root, 500, 500, Color.BLACK);
        scene.setFill(Color.WHITE);
        
        //Rectangle with LinearGradient background
        Stop[] stops = new Stop[] { 
            new Stop(0, Color.BLACK), 
            new Stop(1, Color.RED)};
        LinearGradient linearGradient = 
                new LinearGradient(0, 0, 1, 0, true, 
                        CycleMethod.NO_CYCLE, stops);
        
        Rectangle rect1 = new Rectangle(60, 60, 350, 300);
        rect1.setFill(linearGradient);
        rect1.setStroke(Color.RED);
        rect1.setStrokeWidth(10);
        
        RotateTransition rotateTransition1 = 
            new RotateTransition(Duration.millis(2000), rect1);
        rotateTransition1.setByAngle(360);
        
        rect1.addEventHandler(MouseEvent.MOUSE_CLICKED, (MouseEvent event) -> {
            rotateTransition1.play();
        });

        //Rectangle with LinearGradient Transparence background
        Stop[] stopsTransparence = new Stop[] { 
            new Stop(0, Color.color(0.0, 1.0, 1.0 ,1.0)), 
            new Stop(1, Color.color(0.0, 1.0, 1.0 ,0.0))};
        LinearGradient linearGradientTransparence = 
                new LinearGradient(0, 0, 1, 0, true, 
                        CycleMethod.NO_CYCLE, stopsTransparence);
        
        Rectangle rect2 = new Rectangle(100, 200, 250, 250);
        rect2.setFill(linearGradientTransparence);
        rect2.setStroke(Color.BLUE);
        rect2.setStrokeWidth(10);
        
        RotateTransition rotateTransition2 = 
            new RotateTransition(Duration.millis(2000), rect2);
        rotateTransition2.setByAngle(360);
        rotateTransition2.setCycleCount(2);
        rotateTransition2.setAutoReverse(true);
        
        rect2.addEventHandler(MouseEvent.MOUSE_CLICKED, (MouseEvent event) -> {
            rotateTransition2.play();
        });

        root.getChildren().addAll(rect1, rect2);

        primaryStage.setTitle("java-buddy.blogspot.com");
        primaryStage.setScene(scene);
        primaryStage.show();

    }

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        launch(args);
    }
    
}


1 comment: