编辑问题以包括所需的行为、特定的问题或错误以及重现问题所需的最短代码。这将有助于其他人回答问题。
在下面,它是我的代码,使可再生图形显示生活游戏本身。
public paint(Graphics g)
{
g.setClip();//Set
g.setColor(Color.BLACK);
Processing.....
while(true)
{
g.clearRect();//Clear
g.drawLine(); //Draw;
Calling SwingWorking to prepare next statement
}
}
这样做似乎很愚蠢,因为运行它时,框架一直闪烁和滞后。我尝试使用Thread.睡眠()
,但它只是减慢了闪存的频率。
所以,我的问题是如何做好并避免闪烁。我没有放上的代码部分都是关于实例变量的数据处理,如果你需要,请通知我,非常感谢帮助。
谢谢,@MadProgrammer
这是我得到的,首先,flash是因为当程序调用repaint()和油漆()时,它花费了太多的时间来平滑地制作动画,在这种情况下是clearRect()和DrawLine()。
我将使用双缓冲来解决它。
更新,
谢谢大家,我读了那些例子。我之前只是使用没有任何缓冲方法的帧来显示图形,真是个错误。我使用了缓冲策略来解决它。
制作动画流畅花费了太多时间
对我来说,这意味着你不了解API是如何工作的,如果你用心的话,你可以用Swing做一些复杂的动画。
不久前,我创建了一个“动画序列”引擎,它拍摄了一系列图像,并在彼此之上制作动画
此示例使用5个独立的图像/图层(在顶部放置油漆效果)
每个图层被赋予不同的“速度”,以便它们在动画的基本时间内以不同的速度移动(例如,速度为1将导致图层在序列的基本持续时间内仅旋转一次,在本例中为20秒)
原始图像均为1024x256,因此不考虑尺寸
添加到该序列在透明窗口中播放,并添加了alpha效果(在边缘流血),这不是一个简单的动画。
gif以粗略的8fps播放,实际动画运行速度大约为200fps
(抱歉,这个代码很大,并且使用了许多其他库,例如Timing Framework,因此无法发布)
我的观点是,问题不在于API(Swing/Graphics
),而在于如何使用它
有关更多示例,您可以查看:
这些例子中的大多数甚至没有尝试任何主要的优化或其他性能技术
您还应该看看在AWT中绘画和摇摆和执行自定义绘画,了解有关绘画过程如何工作的更多详细信息