Javafx 简明教程

JavaFX - Fill Transition

在本教程的颜色部分,我们了解到 JavaFX 节点可以用各种颜色着色。但是,我们只学习了如何使用 setFill() 方法对对象进行着色;我们还可以使用动画更改形状的填充颜色。这种类型的动画称为填充过渡。

填充过渡是一种过渡,它改变 JavaFX 节点在指定时期内的颜色。这种过渡通常用于应用程序中进行测验:如果答案正确,选项变为“绿色”,否则变为“红色”。

Fill Transition

填充过渡在 JavaFX 节点上使用 FillTransition 类执行,该类属于 javafx.animation 包。此类包含各种属性,可用于在对象上设置动画。

  1. duration − 此填充过渡的持续时间。

  2. shape − 此填充过渡的目标形状。

  3. fromValue − 指定此 FillTransition 的起始颜色值。

  4. toValue − 指定此 FillTransition 的结束颜色值。

Example

以下是 JavaFX 中展示填充过渡的程序。将此代码另存为名称为 FillTransitionExample.java 的文件。

import javafx.animation.FillTransition;
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 FillTransitionExample 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(100.0f);

      //Setting the color of the circle
      circle.setFill(Color.BROWN);

      //Setting the stroke width of the circle
      circle.setStrokeWidth(20);

      //Creating the fill Transition
      FillTransition fillTransition = new FillTransition(Duration.millis(1000));

      //Setting the shape for Transition
      fillTransition.setShape(circle);

      //Setting the from value of the transition (color)
      fillTransition.setFromValue(Color.BLUEVIOLET);

      //Setting the toValue of the transition (color)
      fillTransition.setToValue(Color.CORAL);

      //Setting the cycle count for the transition
      fillTransition.setCycleCount(50);

      //Setting auto reverse value to false
      fillTransition.setAutoReverse(false);

      //Playing the animation
      fillTransition.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("Fill 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 --module-path %PATH_TO_FX% --add-modules javafx.controls FillTransitionExample.java
java --module-path %PATH_TO_FX% --add-modules javafx.controls FillTransitionExample

执行后,上述程序会生成如下所示的 JavaFX 窗口。

fill transition