如何使用摇摆计时器来启动/停止动画

big*_*man 5 java animation applet swing timer

有人可以教我如何使用swing timer以下目的:

当我点击鼠标时,我需要有一个开始动画的多边形(简单的动画,如旋转); 当我再次点击时停止动画.

我没有理解MouseListener工作方式的问题,而是用实际的动画.我尝试在paint()方法中使用while块模拟动画,我将绘制,擦除和重绘多边形(例如模拟旋转),但在while内部,applet不会听取点击.它会在一段时间之后才会收听.当我点击鼠标时,我需要摆动计时器才能打破.

wan*_*nik 7

import javax.swing.Timer;
Run Code Online (Sandbox Code Playgroud)

添加属性;

Timer timer; 
boolean b;   // for starting and stoping animation
Run Code Online (Sandbox Code Playgroud)

将以下代码添加到框架的构造函数中.

timer = new Timer(100, new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent ae) {
        // change polygon data
        // ...

        repaint();
    }
});
Run Code Online (Sandbox Code Playgroud)

paint(Graphics g)从修改过的数据覆盖并绘制多边形actionPerformed(e).

最后,启动/停止动画的按钮在其事件处理程序中具有以下代码.

if (b) {
    timer.start();
} else {
    timer.stop();
}
b = !b;
Run Code Online (Sandbox Code Playgroud)