java 图片运动轨迹_Java如何让多个图片都按照一定轨迹下落
时间: 2023-09-21 15:08:29 浏览: 35
可以使用Java的图形界面库,如Swing或JavaFX,来实现多个图片的运动轨迹。
首先,你需要定义一个包含多个图片的容器,例如JPanel或Pane。然后,你可以使用Java的定时器(Timer)来触发每个图片的下落运动。在每次定时器触发时,你需要更新每个图片的位置,并在容器中重新绘制它们。
下面是一个简单的示例代码,演示如何让多个图片按照一定轨迹下落:
```java
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;
public class ImageMotion extends JPanel implements ActionListener {
private final int DELAY = 10; // 定时器延迟时间
private final int IMAGE_SIZE = 50; // 图片尺寸
private final int MAX_IMAGES = 10; // 最大图片数量
private Timer timer; // 定时器
private List<Image> images; // 图片列表
private int x, y; // 图片初始位置
public ImageMotion() {
setBackground(Color.WHITE);
setPreferredSize(new Dimension(500, 500));
// 初始化图片列表
images = new ArrayList<Image>();
for (int i = 0; i < MAX_IMAGES; i++) {
Image image = new ImageIcon("image.png").getImage();
images.add(image);
}
// 初始化图片初始位置
x = getWidth() / 2;
y = 0;
// 创建定时器
timer = new Timer(DELAY, this);
timer.start();
}
@Override
public void actionPerformed(ActionEvent e) {
// 更新每个图片的位置
for (Image image : images) {
x += (int) (Math.random() * 11) - 5; // 水平方向随机移动
y += 5; // 垂直方向下落
}
repaint(); // 重新绘制图片
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
// 绘制每个图片
for (Image image : images) {
g.drawImage(image, x, y, IMAGE_SIZE, IMAGE_SIZE, this);
}
}
public static void main(String[] args) {
SwingUtilities.invokeLater(() -> {
JFrame frame = new JFrame("Image Motion");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(new ImageMotion());
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
});
}
}
```
在这个示例中,我们使用一个定时器来触发每个图片的下落运动。在每个定时器触发时,我们更新每个图片的位置,并在容器中重新绘制它们。每个图片的位置是在水平方向随机移动,并在垂直方向下落。你可以根据需要修改运动路径和速度。