之后
嗨,我当前正在制作一个程序,该程序将显示一个以我输入并使用物理公式的值移动的弹簧。问题是,当我创建一个弹簧并使动画开始时,旧图像一直存在并重要
bouton3.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
/*anime.animer();
anime.repaint();*/
for (int t = 0; t < 500; t += 5) {
for (int i = 105; i < 175; i += 5) {
Ellipse2D elp1 = new Ellipse2D.Double(i, 100, 15, 30);
((Graphics2D) dessinPanel.getGraphics()).draw(elp1);
}
for (int i = 105; i < 175; i += 5) {
Ellipse2D elp1 = new Ellipse2D.Double(i, 100, 15 + osi.simuler(t), 30);
((Graphics2D) dessinPanel.getGraphics()).draw(elp1);
dessinPanel.repaint();
Rectangle2D rect = new Rectangle2D.Double(186 + osi.simuler(t), 90, 50, 50);
((Graphics2D) dessinPanel.getGraphics()).draw(rect);
dessinPanel.repaint();
}
try {
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
});
这也是一些图片来显示问题:前
您需要从价值调整中解除绘画。
您的绘画操作应从清除背景开始,然后使用当前输入值绘制弹簧和盒子。
当输入值更改时,只需更新变量并无效((显示区域。
为了获得更好的性能,也可以通过在其当前位置以背景颜色绘制弹簧和框来清除背景。这也使更新输入值更加困难。
您可能会使用的另一种技术是扩大刷子并首先绘制背景颜色,然后缩小刷子并以正确形式绘制实际的弹簧和矩形。只要您控制金额可以在一个框架中移动的金额,这将等效于擦除背景。