gpt4 book ai didi

java - 如何在每次循环计数后更改矩形的颜色?

转载 作者:行者123 更新时间:2023-12-02 02:39:43 25 4
gpt4 key购买 nike

我有一个从左到右动画的矩形。我希望矩形在每次循环计数后随机更改颜色,但我希望它仅更改所选颜色的颜色。例如,我有红色、蓝色和橙色,然后我希望矩形仅更改红色、蓝色和橙色的颜色。例如,如果它从左向右移动,那么首先它是蓝色的,然后在一个循环计数后(当它从左向右完成时),那么它应该将颜色更改为红色或橙色等。

这是我的以下代码:

public class Rect extends Application {


@Override
public void start(Stage stage) {
Pane canvas = new Pane();
Scene scene = new Scene(canvas, 500, 600);
Rectangle rect = new Rectangle (100, 40, 100, 100);
rect.setArcHeight(50);
rect.setArcWidth(50);
rect.setFill(Color.BLUE);

TranslateTransition tt1 = new TranslateTransition(Duration.millis(3000), rect);
tt1.setByY(1000f);
tt1.setCycleCount(Animation.INDEFINITE);
tt1.setAutoReverse(false);
tt1.play();
canvas.getChildren().add(rect);
stage.setScene(scene);
stage.show();

}

public static void main(String[] args) {
launch();
}
}

最佳答案

使用Timeline而不是TranslateTransitionTimeline 使用 KeyFrame 的集合,并且 KeyFrame 允许您指定到达帧时要执行的处理程序,以及属性和该属性的值:

import java.util.Random;

import javafx.animation.Animation;
import javafx.animation.KeyFrame;
import javafx.animation.KeyValue;
import javafx.animation.Timeline;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.Pane;
import javafx.scene.paint.Color;
import javafx.scene.shape.Rectangle;
import javafx.stage.Stage;
import javafx.util.Duration;

public class Rect extends Application {

@Override
public void start(Stage stage) {
Pane canvas = new Pane();
Scene scene = new Scene(canvas, 500, 600);
Rectangle rect = new Rectangle(100, 40, 100, 100);
rect.setArcHeight(50);
rect.setArcWidth(50);
rect.setFill(Color.BLUE);

Color[] palette = new Color[] { Color.RED, Color.BLUE, Color.ORANGE };
Random rng = new Random();

Timeline tt1 = new Timeline(
new KeyFrame(
Duration.millis(3000),
e -> rect.setFill(palette[rng.nextInt(palette.length)]),
new KeyValue(rect.yProperty(), 1040)
)
);

tt1.setCycleCount(Animation.INDEFINITE);
tt1.setAutoReverse(false);
tt1.play();
canvas.getChildren().add(rect);
stage.setScene(scene);
stage.show();

}

public static void main(String[] args) {
launch();
}
}

关于java - 如何在每次循环计数后更改矩形的颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45692035/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com