在JavaFX中,可以通过使用动画和事件处理来同时移动两个矩形。以下是一个示例代码,演示了如何实现这个功能:
import javafx.animation.TranslateTransition;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.Pane;
import javafx.scene.shape.Rectangle;
import javafx.stage.Stage;
import javafx.util.Duration;
public class TwoRectanglesAnimation extends Application {
@Override
public void start(Stage primaryStage) {
Pane root = new Pane();
Rectangle rect1 = new Rectangle(50, 50, 100, 50);
Rectangle rect2 = new Rectangle(200, 200, 100, 50);
root.getChildren().addAll(rect1, rect2);
// 创建一个 TranslateTransition 对象来移动矩形1
TranslateTransition tt1 = new TranslateTransition(Duration.seconds(2), rect1);
tt1.setByX(200); // 水平移动200像素
tt1.setCycleCount(TranslateTransition.INDEFINITE);
tt1.setAutoReverse(true);
tt1.play();
// 创建一个 TranslateTransition 对象来移动矩形2
TranslateTransition tt2 = new TranslateTransition(Duration.seconds(2), rect2);
tt2.setByY(200); // 垂直移动200像素
tt2.setCycleCount(TranslateTransition.INDEFINITE);
tt2.setAutoReverse(true);
tt2.play();
Scene scene = new Scene(root, 400, 400);
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
上述代码创建了一个JavaFX应用程序,并在窗口中显示了两个矩形。使用TranslateTransition类可以实现矩形的移动效果。创建TranslateTransition对象时,指定了移动的持续时间(2秒)和移动的距离。通过调用setByX和setByY方法,分别指定了矩形1和矩形2的水平和垂直移动距离。设置setCycleCount为TranslateTransition.INDEFINITE可以使动画无限循环播放,setAutoReverse(true)可以使动画在达到目标位置后自动返回起始位置。
这个例子中,矩形1水平方向移动,矩形2垂直方向移动。你可以根据需要调整移动距离、持续时间和其他动画效果参数。
领取专属 10元无门槛券
手把手带您无忧上云