How do you double buffer in java for a game?

后端 未结 4 1032
逝去的感伤
逝去的感伤 2020-11-27 07:35

So in the game I\'m working on, I have a marble follow the mouse, but when it does this the screen flickers.

The background includes two jpegs and 9 rectangles. How

4条回答
  •  粉色の甜心
    2020-11-27 07:49

    Double buffering is conceptually pretty simple, instead of drawing your objects one by one, you draw them on an image and then tell the renderer to draw that entire image. This eliminates the flickering.

    Here's an example of how you might do this (source)

    class DoubleBufferedCanvas extends Canvas {
    
        public void update(Graphics g) {
        Graphics offgc;
        Image offscreen = null;
        Dimension d = size();
    
        // create the offscreen buffer and associated Graphics
        offscreen = createImage(d.width, d.height);
        offgc = offscreen.getGraphics();
        // clear the exposed area
        offgc.setColor(getBackground());
        offgc.fillRect(0, 0, d.width, d.height);
        offgc.setColor(getForeground());
        // do normal redraw
        paint(offgc);
        // transfer offscreen to window
        g.drawImage(offscreen, 0, 0, this);
        }
    }
    

    Nowdays, you don't have to implement this yourself, you can use the BufferStrategy and releated classes. See lakam99's answer for an example of that .

提交回复
热议问题