Java后台缓冲区和动画

时间:2011-10-11 08:06:36

标签: java swing

我在java中创建一个简单的2D游戏。到目前为止,我只使用Windows API在C ++中完成此操作。在java中,我通过扩展Graphics并调用JFrame来获取this.getContentPane().getGraphics()个对象。有了这个对象,我每一帧都将所有内容绘制到屏幕上。这引出了一些问题:

  1. Backbuffer:我没有得到任何闪烁效果,而我没有使用后备缓冲(我直接在Graphics对象上绘图)。为什么是这样? java有内置后备缓冲区吗?

  2. 动画:我习惯将所有动画部分放在一个精灵表中,如下例所示: http://www.envygames.com/share/sample_animation.jpg

  3. 现在,有人告诉我你可以画动画.gif和java将绘制这些独立于游戏循环。我已经尝试过了,它似乎没有用。这是真的还是我也应该在java中使用这些精灵表?

    由于

2 个答案:

答案 0 :(得分:3)

是的,Java有一个可以打开和关闭的双缓冲区渲染策略......

Java: how to do double-buffering in Swing?

关于动画GIF,我认为这是对的,但你可能必须将它们放在适当的容器中(可能是JLabel的图标?)。

答案 1 :(得分:2)

getting a Graphics object by extending JFrame and 
calling this.getContentPane().getGraphics().

不要直接绘制JFrame Custom Painting JLabel,你必须寻找允许绘制所有内容的{{3}},另一个选择将扩展JCompoments或{{ 1}}对于那个

要在Swing中绘画,你必须寻找JPanel,而不是paintComponent(Graphics g),因为这个方法在示例中使用了很多时间,并且在一些Java ExamplesDepots上进行了分析,这是错误的方法,可能缺少