在Java中,可以使用Java 2D API來實現Line2D動畫效果。以下是一個簡單的示例,展示了如何使用javax.swing.Timer
來創建一個簡單的Line2D動畫:
import javax.swing.*;
import java.awt.*;
import java.awt.geom.*;
import java.awt.event.*;
JPanel
的類,用于繪制Line2D動畫:class Line2DAnimationPanel extends JPanel implements ActionListener {
private static final int WIDTH = 800;
private static final int HEIGHT = 600;
private static final int LINE_LENGTH = 100;
private static final int LINE_SPEED = 5;
private Line2D.Double line;
private Timer timer;
public Line2DAnimationPanel() {
line = new Line2D.Double(WIDTH / 2, HEIGHT / 2, WIDTH / 2, HEIGHT / 2 - LINE_LENGTH);
timer = new Timer(1000 / LINE_SPEED, this);
timer.start();
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g;
g2d.setStroke(new BasicStroke(5));
g2d.draw(line);
}
@Override
public void actionPerformed(ActionEvent e) {
if (line.getY1() > 0) {
line.setY1(line.getY1() - LINE_SPEED);
} else {
line.setY1(HEIGHT - LINE_LENGTH);
line.setY2(HEIGHT - LINE_LENGTH);
}
repaint();
}
public static void main(String[] args) {
SwingUtilities.invokeLater(() -> {
JFrame frame = new JFrame("Line2D Animation");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(WIDTH, HEIGHT);
frame.add(new Line2DAnimationPanel());
frame.setVisible(true);
});
}
}
在這個示例中,我們創建了一個名為Line2DAnimationPanel
的類,它繼承自JPanel
。我們使用javax.swing.Timer
來定時更新Line2D的位置,并在每次更新后調用repaint()
方法重繪面板。
paintComponent()
方法用于繪制Line2D,我們使用Graphics2D
對象來設置畫筆樣式和顏色。actionPerformed()
方法用于處理計時器事件,當計時器觸發時,我們更新Line2D的位置,并調用repaint()
方法重繪面板。
最后,在main()
方法中,我們創建了一個JFrame
窗口,將Line2DAnimationPanel
添加到窗口中,并設置窗口的大小和可見性。