Java applet仅以10 fps更新

时间:2011-11-01 03:38:02

标签: java animation applet drawing appletviewer

我最近的一项Java作业(高中课程......)是制作一个小程序,其中绘制了一个边框,一个球在屏幕上移动,在边界上弹跳。我安装了Fraps,它报告applet仅以10 fps的速度运行,这使得动画看起来非常平庸。

我绘制动画的原始方式:

  1. drawScreen()
  2. 中调用我的方法:paint()
  3. Thread.sleep(1000/frameRate)暂停drawScreen()帧速率,从html
  4. 传递
  5. 致电repaint()
  6. 这非常好用,小程序像梦一样......直到我看到评分表,它说我一定不能每次重绘屏幕(也许是因为计算机是异常缓慢,我的朋友一直在抱怨他们的applet闪烁得足以引起眼睛不适,并且整个地方都有很多撕裂),我必须画一个球,然后画出另一个球相同颜色的背景来掩盖它,计算坐标,然后重复直到applet退出

    问题在于

    • repaint()无法调用
    • 我的动画上限为10 fps
    • 没有线程可以回复我在appletviewer上点击关闭,或applet / viewer中的任何其他内容。

    我的动画是否可以在不使用repaint()的情况下以超过10 fps的速度运行?

2 个答案:

答案 0 :(得分:3)

  1. 请不要:
    1. 在顶级容器中执行自定义动画,例如Applet(/ JAppet)或Frame(/ JFrame)。而是将自定义绘图放在Canvas / PanelJComponent / JPanel中,然后将该组件放入顶级容器中。
    2. 在这个千年中使用AWT组件。
    3. 为Swing组件覆盖paint() - 它应为paintComponent(Graphics)
  2. 不要在绘画线程上使用Thread.sleep(n)。而是使用Swing Timer并执行操作..
  3. 致电repaint()

答案 1 :(得分:0)

原来我需要实现双缓冲或在双缓冲浏览器中运行applet。 AppletViewer将动画限制为10 fps,因为它不会自动缓冲applet,而且我一直在其中运行applet。