我在java中创建一个简单的2D游戏。到目前为止,我只使用Windows API在C ++中完成此操作。在java中,我通过扩展Graphics
并调用JFrame
来获取this.getContentPane().getGraphics()
个对象。有了这个对象,我每一帧都将所有内容绘制到屏幕上。这引出了一些问题:
Backbuffer:我没有得到任何闪烁效果,而我没有使用后备缓冲(我直接在Graphics
对象上绘图)。为什么是这样? java有内置后备缓冲区吗?
动画:我习惯将所有动画部分放在一个精灵表中,如下例所示: http://www.envygames.com/share/sample_animation.jpg
现在,有人告诉我你可以画动画.gif和java将绘制这些独立于游戏循环。我已经尝试过了,它似乎没有用。这是真的还是我也应该在java中使用这些精灵表?
由于
答案 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上进行了分析,这是错误的方法,可能缺少