2

我应该如何在 Swing 小程序中运行动画?

我有一个执行主动渲染的动画线程,它最初的动画效果很好。有时(从 1 分钟到 2 小时后)它开始无法更新屏幕,只出现声音。我相信这是由于没有从 EDT 执行绘制导致某种并发问题。

那么,是否应该只从 EDT 调用活动渲染(即 getGraphics() 和绘画)?这样做的一个问题是 Swing 计时器缺乏精度。

或者有没有人在不使用 EDT 的情况下成功地进行主动渲染,并完全禁用对页面的任何 EDT 更新(可能使用 Canvas / 或忽略 JPanel 上的重绘)?

4

2 回答 2

2

您可以在另一个线程中将图形绘制到您自己的屏幕外图像中,然后在 EDT 中复制到屏幕上。但是对于单线程的东西,我希望你的帧速率足够高,能够在 EDT 中完成。

于 2009-03-26T18:04:48.793 回答
1

需要注意的几件事是确保您只重新绘制需要重新绘制的内容,而不是每次都重新绘制整个图形上下文,除非有必要。还有一个计时框架,您可以使用它来处理一些动画。我不认为它正在积极开发中,但上次我查看它时,它有一些不错的 api 可用于动画。

在不知道您的具体用例的情况下,这就是我所能想到的。

于 2009-03-26T21:30:25.677 回答