我最近的一项Java作业(高中课程......)是制作一个小程序,其中绘制了一个边框,一个球在屏幕上移动,在边界上弹跳。我安装了Fraps,它报告applet仅以10 fps的速度运行,这使得动画看起来非常平庸。
我绘制动画的原始方式:
drawScreen()
paint()
Thread.sleep(1000/frameRate)
暂停drawScreen()
帧速率,从html
repaint()
这非常好用,小程序像梦一样......直到我看到评分表,它说我一定不能每次重绘屏幕(也许是因为计算机是异常缓慢,我的朋友一直在抱怨他们的applet闪烁得足以引起眼睛不适,并且整个地方都有很多撕裂),我必须画一个球,然后画出另一个球相同颜色的背景来掩盖它,计算坐标,然后重复直到applet退出
问题在于
repaint()
无法调用我的动画是否可以在不使用repaint()
的情况下以超过10 fps的速度运行?
答案 0 :(得分:3)
Applet
(/ JAppet
)或Frame
(/ JFrame
)。而是将自定义绘图放在Canvas
/ Panel
或JComponent
/ JPanel
中,然后将该组件放入顶级容器中。paint()
- 它应为paintComponent(Graphics)
。Thread.sleep(n)
。而是使用Swing Timer
并执行操作.. repaint()
。答案 1 :(得分:0)
原来我需要实现双缓冲或在双缓冲浏览器中运行applet。 AppletViewer将动画限制为10 fps,因为它不会自动缓冲applet,而且我一直在其中运行applet。