运作方式如下:
- 该
Jframe
构造了一个BufferStrategy
当你调用createBufferStrategy(2);
。该BufferStrategy
知道它属于那个特定实例Jframe
。您正在检索它并将其存储在bs
现场。 - 到了该画画的时候,您正在
Graphics2D
从中检索一个bs
。该Graphics2D
对象绑定到拥有的内部缓冲区之一bs
。绘制时,所有内容都将进入该缓冲区。 - 当您最终调用时
bs.show()
,bs
将使您刚才绘制的缓冲区成为的当前缓冲区Jframe
。它知道如何执行此 *** 作,因为(请参阅第1点)它知道该Jframe
服务的目的。
这就是所有的事情。
通过注释代码…您应该稍微更改绘图例程。代替这个:
try{ g2 = (Graphics2D) bs.getDrawGraphics(); drawWhatEver(g2);} finally { g2.dispose();}bs.show();
您应该有一个像这样的循环:
do { try{ g2 = (Graphics2D) bs.getDrawGraphics(); drawWhatEver(g2); } finally {g2.dispose(); } bs.show();} while (bs.contentsLost());
这将防止丢失丢失的缓冲帧,根据文档,这种情况可能偶尔发生。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)