2012-02-29 117 views
3

我在做一个包括物理和图形引擎的游戏引擎。现在我的图形引擎被设置为60 fps,有时候我发现屏幕上的更新速度很慢。我有一个JFrame,我添加了一个可以移动的JPanel,这意味着图形引擎在每个循环中都执行frame.repaint()。我开始相信在画面上进行重新绘制可以在屏幕上实现小的延迟。JFrame vs JPanel

延迟是这样的,JPanel在一条直线上移动,突然它可以比平常跳得更远。

在JFrame上放一个JPanel“gameField”,然后在gameField中添加一个JPanel“player”并重新绘制gameField会更好吗?或者它与重绘JFrame基本相同?我刚刚听说JFrame应该是一个沉重的组件。

我试过设置更高的fps,它不会改变任何东西。

+1

你看过写入缓冲区然后写入屏幕? – 2012-02-29 21:52:11

+0

你愿意用一个例子来精心设计吗? :)我不是在挥杆 – 2012-02-29 22:02:02

+2

请编辑您的问题,以包括一个[sscce](http://sscce.org/),展示您描述的问题。 ['AnimationTest'](http://stackoverflow.com/a/3256941/230513)可能是一个有用的起点。 – trashgod 2012-02-29 22:06:19

回答

3

看看这个页面here,这是很多的阅读,但应该包含你所需要的大部分。

编辑:这页here更加简洁

有点这个堆栈溢出后here交易的双缓冲。

尽管我可以给你的最好的建议是找到'Java的杀手游戏编程'的副本。您可以轻松地从网上免费获得旧版电子书版本。很多东西都有点过时,但前几章讨论了如何创建游戏循环并写入缓冲区,这些章节仍然非常相关,从长远来看,这对您有很大的帮助!

+0

干杯队友,这是我需要:) – 2012-03-01 20:53:42