JavaFX - Animasyonlar

Genel olarak, bir nesneyi hareketlendirmek, hızlı görüntüleme ile hareketinin yanılsamasını yaratmayı ifade eder. JavaFX'te, özelliği zaman içinde değiştirilerek bir düğüm canlandırılabilir. JavaFX adlı bir paket sağlarjavafx.animation. Bu paket, düğümleri canlandırmak için kullanılan sınıfları içerir. Animasyon, tüm bu sınıfların temel sınıfıdır.

JavaFX kullanarak, aşağıdaki gibi animasyonlar (geçişler) uygulayabilirsiniz. Fade Transition, Fill Transition, Rotate Transition, Scale Transition, Stroke Transition, Translate Transition, Path Transition, Sequential Transition, Pause Transition, Parallel Transition, vb.

Tüm bu geçişler paketteki bireysel sınıflarla temsil edilir javafx.animation.

Bir düğüme belirli bir animasyon uygulamak için, aşağıda verilen adımları izlemelisiniz -

  • İlgili sınıfı kullanarak bir gerekli düğüm oluşturun.

  • Uygulanacak ilgili geçiş (animasyon) sınıfını örnekleyin

  • Geçişin özelliklerini ayarlayın ve

  • Sonunda geçişi kullanarak play() yöntemi Animation sınıf.

Bu bölümde temel geçişlerin (Döndürme, Ölçeklendirme, Çevirme) örneklerini tartışacağız.

Geçişi Döndür

Aşağıda, JavaFX'te Döndürme Geçişini gösteren program yer almaktadır. Bu kodu adıyla bir dosyaya kaydedinRotateTransitionExample.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); 
   } 
}

Kaydedilen java dosyasını aşağıdaki komutları kullanarak komut isteminden derleyin ve yürütün.

javac RotateTransitionExample.java 
java RotateTransitionExample

Yürütüldüğünde, yukarıdaki program aşağıda gösterildiği gibi bir JavaFX penceresi oluşturur.

Ölçek Geçişi

Aşağıda JavaFX'te Ölçek Geçişini gösteren program yer almaktadır. Bu kodu adıyla bir dosyaya kaydedinScaleTransitionExample.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); 
   } 
}

Kaydedilen java dosyasını aşağıdaki komutları kullanarak komut isteminden derleyin ve yürütün.

javac ScaleTransitionExample.java 
java ScaleTransitionExample

Yürütüldüğünde, yukarıdaki program aşağıda gösterildiği gibi bir JavaFX penceresi oluşturur.

Transition'ı Çevir

JavaFX'te Translate Transition'ı gösteren program aşağıdadır. Bu kodu adıyla bir dosyaya kaydedinTranslateTransitionExample.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); 
   } 
}

Kaydedilen java dosyasını aşağıdaki komutları kullanarak komut isteminden derleyin ve yürütün.

javac TranslateTransitionExample.java 
java TranslateTransitionExample

Yürütüldüğünde, yukarıdaki program aşağıda gösterildiği gibi bir JavaFX penceresi oluşturur.

Bunlara ek olarak, JavaFX, sınıfların düğümlere daha fazla geçiş uygulaması sağlar. Aşağıda JavaFX tarafından desteklenen diğer geçiş türleri verilmiştir.

  • Düğümlerin özelliklerini etkileyen geçişler Soldur, Doldur, Kontur

  • Birden fazla temel geçiş içeren Geçiş Sıralı, Paralel, Duraklat

  • Nesneyi belirtilen yol boyunca çeviren geçiş Yol Geçişi