javafx中如何让几张图片同时运动
时间: 2024-03-12 21:48:01 浏览: 21
在 JavaFX 中,可以使用 `AnimationTimer` 类来实现多张图片的同时运动。
具体步骤如下:
1. 创建一个 `AnimationTimer` 对象。
2. 在 `handle()` 方法中,编写多张图片的运动代码。
3. 为每张图片设置不同的运动轨迹和速度。
4. 在应用程序中启动 `AnimationTimer` 对象,即可实现多张图片的同时运动。
下面是一段示例代码,演示了如何实现多张图片的同时运动:
```java
public class MultipleImagesAnimation extends Application {
private ImageView image1, image2, image3;
@Override
public void start(Stage primaryStage) {
// 创建三张图片
Image img1 = new Image("image1.png");
Image img2 = new Image("image2.png");
Image img3 = new Image("image3.png");
image1 = new ImageView(img1);
image2 = new ImageView(img2);
image3 = new ImageView(img3);
// 设置图片的起始位置
image1.setLayoutX(50);
image1.setLayoutY(50);
image2.setLayoutX(100);
image2.setLayoutY(100);
image3.setLayoutX(150);
image3.setLayoutY(150);
// 创建 AnimationTimer 对象
AnimationTimer timer = new AnimationTimer() {
@Override
public void handle(long now) {
// 编写图片的运动代码
double dx1 = Math.sin(now / 500000000.0) * 100;
double dy1 = Math.cos(now / 500000000.0) * 100;
image1.setLayoutX(50 + dx1);
image1.setLayoutY(50 + dy1);
double dx2 = Math.sin(now / 700000000.0) * 120;
double dy2 = Math.cos(now / 700000000.0) * 120;
image2.setLayoutX(100 + dx2);
image2.setLayoutY(100 + dy2);
double dx3 = Math.sin(now / 900000000.0) * 150;
double dy3 = Math.cos(now / 900000000.0) * 150;
image3.setLayoutX(150 + dx3);
image3.setLayoutY(150 + dy3);
}
};
// 将图片添加到场景中
Group root = new Group(image1, image2, image3);
Scene scene = new Scene(root, 300, 300);
primaryStage.setScene(scene);
// 启动 AnimationTimer 对象
timer.start();
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
```
在该示例代码中,创建了三张图片,分别为 `image1`、`image2`和`image3`。为了使它们同时运动,创建了一个 `AnimationTimer` 对象,并在 `handle()` 方法中编写了图片的运动代码。具体来说,使用正弦和余弦函数来计算每张图片在 x 和 y 方向上的位移量,从而实现了图片的平滑运动。
最后,将三张图片添加到场景中,并启动 `AnimationTimer` 对象,即可看到三张图片同时运动的效果。