关于双缓存

为了防止屏幕闪烁现象,利用双缓存解决。原理主要是将图片画在虚拟屏幕上,再将画直接从虚拟屏幕上直接画在实际屏幕上。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();
    }


你可能感兴趣的:(双缓存)