为了防止屏幕闪烁现象,利用双缓存解决。原理主要是将图片画在虚拟屏幕上,再将画直接从虚拟屏幕上直接画在实际屏幕上。repaint()方法实际上是先调用update()方法然后再调用paint()方法,实现双缓存就利用了这一点,代码如下
Image offScreenImage=null;
public void update(Graphics g) { if(offScreenImage==null) offScreenImage=this.createImage(GAME_WIDTH,GAME_HIGHT); Graphics gOffScreenImage=offScreenImage.getGraphics(); Color c=gOffScreenImage.getColor(); gOffScreenImage.setColor(Color.GREEN); gOffScreenImage.fillRect(0, 0, GAME_WIDTH,GAME_HIGHT); gOffScreenImage.setColor(c);//刷新背景 paint(gOffScreenImage);//利用虚拟屏的画笔在虚拟屏上画图ss g.drawImage(offScreenImage,0,0,null);//将虚拟图上的图片贴到实际屏幕上 //双缓存主要是利用调用repaint方法的顺序是先调用update(),再调用paint(); }
时间: 2024-10-14 08:32:51