当前位置: 技术问答>java相关
我做了个俄罗斯方块游戏,不过屏幕闪动很大,有什么办法解决??谢谢
来源: 互联网 发布时间:2017-03-22
本文导语: 我做了个俄罗斯方块游戏,不过屏幕闪动很大,有什么办法解决??谢谢 | 闪烁的原因是你作图的时候需要重绘背景,而且你每画一个图形,画面变化一次,这样就显得在闪烁。 解决的办法...
我做了个俄罗斯方块游戏,不过屏幕闪动很大,有什么办法解决??谢谢
|
闪烁的原因是你作图的时候需要重绘背景,而且你每画一个图形,画面变化一次,这样就显得在闪烁。
解决的办法是使用双缓冲技术,方法是:先将所有的图形画到一个看不到的东西上,然后一次性的把整张图画到要显示的地方。
具体做法:java里有一个类叫做Image,可以把他看作是一个画画的地方,不能直接看到他,他上面是可以作画的,先把所有的东西画到一个Image
上,假如显示的地方是一个JPanel,使用JPanel的Graphics的drawImage方法
可以把那个Image画到JPanel上,也就是显示出来。这样子就不会出现闪烁了。而且,窗体重绘的时候也只需要把Image重新画到JPanel上就行了。
Image img; // 生成引用
......
img = jPanel1.createImage(width,length....); // Image 不能new ,
// 只能这样子创建,假设显示区域是jPanel1
.....
img.getGraphics().drawRectangle(...) //画矩形
img.getGraphics().drawOval(..) // 画圆
......
.....
jPanel1.getGraphics().drawImage( img, ...._) // 显示出来
......
搞定。
解决的办法是使用双缓冲技术,方法是:先将所有的图形画到一个看不到的东西上,然后一次性的把整张图画到要显示的地方。
具体做法:java里有一个类叫做Image,可以把他看作是一个画画的地方,不能直接看到他,他上面是可以作画的,先把所有的东西画到一个Image
上,假如显示的地方是一个JPanel,使用JPanel的Graphics的drawImage方法
可以把那个Image画到JPanel上,也就是显示出来。这样子就不会出现闪烁了。而且,窗体重绘的时候也只需要把Image重新画到JPanel上就行了。
Image img; // 生成引用
......
img = jPanel1.createImage(width,length....); // Image 不能new ,
// 只能这样子创建,假设显示区域是jPanel1
.....
img.getGraphics().drawRectangle(...) //画矩形
img.getGraphics().drawOval(..) // 画圆
......
.....
jPanel1.getGraphics().drawImage( img, ...._) // 显示出来
......
搞定。