Java backbuffer和动画
我正在用java创建一个简单的2D游戏。到目前为止,我只在Windows API中用C++完成了这个操作。在java中,通过扩展Java backbuffer和动画,java,swing,Java,Swing,我正在用java创建一个简单的2D游戏。到目前为止,我只在Windows API中用C++完成了这个操作。在java中,通过扩展JFrame并调用this.getContentPane().getGraphics(),我得到了一个Graphics对象。用这个物体,我把所有的东西都画到屏幕上,每一帧。这引发了几个问题: Backbuffer:我没有得到任何闪烁效果,而我没有使用Backbuffer(我直接在图形对象上绘制)。为什么会这样?java是否有内置的backbuffer之类的东西 动画:我
JFrame
并调用this.getContentPane().getGraphics()
,我得到了一个Graphics
对象。用这个物体,我把所有的东西都画到屏幕上,每一帧。这引发了几个问题:
图形
对象上绘制)。为什么会这样?java是否有内置的backbuffer之类的东西谢谢是的,Java有一个双缓冲区渲染策略,可以打开和关闭
关于动画GIF,我认为这是正确的,但您可能必须将它们放在适当的容器中(可能作为JLabel的图标?)。是的,Java有一种可以打开和关闭的双缓冲区渲染策略 关于动画GIF,我认为这是正确的,但您可能必须将它们放在适当的容器中(可能作为JLabel的图标?) 不要直接绘制到,因为您必须寻找允许绘制所有内容的工具,另一种选择是扩展
JCompoments
,或JPanel
对于Swing中的绘制,您必须查找paintComponent(Graphics g)
,而不是paint(Graphics g)
,因为这种方法在示例中使用了很多时间,并且在一些Java示例点上进行了编辑,这是一种错误的方法,可能存在缺陷
不要直接绘制到,因为您必须寻找允许绘制所有内容的工具,另一种选择是扩展JCompoments
,或JPanel
对于Swing中的绘制,您必须查找paintComponent(Graphics g)
,而不是paint(Graphics g)
,因为此方法在示例中使用了大量时间,并在一些Java示例盆上进行了编辑,这是一个错误的方法,可能缺少paint()和paintComponent()之间的区别第一个默认实现委托paintComponent()、paintBorder()和paintChildren(),因此,如果op的帧是无边界的,并且不用作swing容器,那么使用它没有任何问题paintComponent()和paintComponent()之间的区别在于第一个默认实现委托paintComponent(),paintBorder()和paintChildren(),因此,如果op的框架是无边界的,并且不用作swing容器,那么使用它没有什么问题
getting a Graphics object by extending JFrame and
calling this.getContentPane().getGraphics().