JavaFX-애니메이션
일반적으로 개체를 애니메이션하는 것은 빠른 표시를 통해 모션의 환상을 만드는 것을 의미합니다. JavaFX에서 노드는 시간이 지남에 따라 속성을 변경하여 애니메이션 할 수 있습니다. JavaFX는javafx.animation. 이 패키지에는 노드를 애니메이션하는 데 사용되는 클래스가 포함되어 있습니다. 애니메이션은 이러한 모든 클래스의 기본 클래스입니다.
JavaFX를 사용하면 다음과 같은 애니메이션 (전환)을 적용 할 수 있습니다. Fade Transition, Fill Transition, Rotate Transition, Scale Transition, Stroke Transition, Translate Transition, Path Transition, Sequential Transition, Pause Transition, Parallel Transition등
이러한 모든 전환은 패키지의 개별 클래스로 표시됩니다. javafx.animation.
특정 애니메이션을 노드에 적용하려면 아래 단계를 따라야합니다.
각 클래스를 사용하여 필수 노드를 만듭니다.
적용 할 각 전환 (애니메이션) 클래스를 인스턴스화합니다.
전환 속성을 설정하고
마지막으로 play() 의 방법 Animation 수업.
이 장에서는 기본 전환 (회전, 크기 조정, 변환)의 예를 설명합니다.
전환 회전
다음은 JavaFX에서 Rotate Transition을 보여주는 프로그램입니다. 이 코드를 이름으로 파일에 저장하십시오.RotateTransitionExample.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);
}
}
다음 명령을 사용하여 명령 프롬프트에서 저장된 Java 파일을 컴파일하고 실행합니다.
javac RotateTransitionExample.java
java RotateTransitionExample
위의 프로그램을 실행하면 아래와 같이 JavaFX 창이 생성됩니다.
스케일 전환
다음은 JavaFX에서 Scale Transition을 시연하는 프로그램입니다. 이 코드를 이름으로 파일에 저장하십시오.ScaleTransitionExample.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);
}
}
다음 명령을 사용하여 명령 프롬프트에서 저장된 Java 파일을 컴파일하고 실행합니다.
javac ScaleTransitionExample.java
java ScaleTransitionExample
위의 프로그램을 실행하면 아래와 같이 JavaFX 창이 생성됩니다.
Transition 번역
다음은 JavaFX에서 번역 전환을 보여주는 프로그램입니다. 이 코드를 이름으로 파일에 저장하십시오.TranslateTransitionExample.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);
}
}
다음 명령을 사용하여 명령 프롬프트에서 저장된 Java 파일을 컴파일하고 실행합니다.
javac TranslateTransitionExample.java
java TranslateTransitionExample
위의 프로그램을 실행하면 아래와 같이 JavaFX 창이 생성됩니다.
이 외에도 JavaFX는 노드에 더 많은 전환을 적용하는 클래스를 제공합니다. 다음은 JavaFX에서 지원하는 다른 종류의 전환입니다.
노드 Fade, Fill, Stroke 의 속성에 영향을주는 전환
둘 이상의 기본 전환이 포함 된 전환 Sequential, Parallel, Pause
지정된 경로를 따라 개체를 변환하는 전환 경로 전환