帮我写一个具有开始和暂停功能的动画播放java代码
时间: 2024-03-26 11:40:25 浏览: 17
好的,以下是一个简单的Java代码示例,实现了开始和暂停功能的动画播放:
```java
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class AnimationPlayer extends JFrame implements ActionListener {
private Timer timer;
private int xPos, yPos;
private boolean paused;
public AnimationPlayer() {
super("Animation Player");
// 设置窗口大小和布局
setSize(400, 400);
setLayout(new BorderLayout());
// 创建一个面板来显示动画
JPanel animationPanel = new JPanel() {
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(Color.RED);
g.fillOval(xPos, yPos, 50, 50);
}
};
add(animationPanel, BorderLayout.CENTER);
// 创建开始和暂停按钮
JButton startButton = new JButton("Start");
JButton pauseButton = new JButton("Pause");
JPanel buttonPanel = new JPanel();
buttonPanel.add(startButton);
buttonPanel.add(pauseButton);
add(buttonPanel, BorderLayout.SOUTH);
// 添加按钮的事件监听器
startButton.addActionListener(this);
pauseButton.addActionListener(this);
// 初始化动画位置和状态
xPos = 0;
yPos = 0;
paused = true;
// 创建定时器,每隔一段时间更新动画位置
timer = new Timer(50, new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if (!paused) {
xPos += 5;
yPos += 5;
animationPanel.repaint();
}
}
});
}
@Override
public void actionPerformed(ActionEvent e) {
if (e.getActionCommand().equals("Start")) {
paused = false;
timer.start();
} else if (e.getActionCommand().equals("Pause")) {
paused = true;
timer.stop();
}
}
public static void main(String[] args) {
AnimationPlayer player = new AnimationPlayer();
player.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
player.setVisible(true);
}
}
```
在这个示例中,我们创建了一个继承自JFrame的AnimationPlayer类,它包含了一个定时器、一个面板用于显示动画、开始和暂停按钮,并实现了ActionListener接口来处理按钮的事件。
在构造函数中,我们初始化了动画的位置和状态,并创建了定时器。定时器每隔50毫秒更新一次动画的位置,如果没有暂停的话。我们在定时器中调用了animationPanel的repaint()方法来刷新面板,从而更新动画的位置。
在actionPerformed()方法中,我们检查了按钮的命令,如果是“Start”按钮,则将paused设置为false,并启动定时器;如果是“Pause”按钮,则将paused设置为true,并停止定时器。
最后,在main()方法中,我们创建了一个AnimationPlayer对象,并设置了关闭窗口时的默认操作为退出程序。