java double buffering problem

Posted by russell on Stack Overflow See other posts from Stack Overflow or by russell
Published on 2010-05-21T07:53:33Z Indexed on 2010/05/21 8:20 UTC
Read the original article Hit count: 244

Filed under:

Whats wrong with my applet code which does not render double buffering correctly.I am trying and trying.But failed to get a solution.Plz Plz someone tell me whats wrong with my code.

import java.applet.* ;
import java.awt.* ;
import java.awt.event.* ;

public class Ball extends Applet implements Runnable { // Initialisierung der Variablen int x_pos = 10; // x - Position des Balles int y_pos = 100; // y - Position des Balles int radius = 20; // Radius des Balles

Image buffer=null;
//Graphics graphic=null;

int w,h;


public void init()
{
    Dimension d=getSize();
    w=d.width;
    h=d.height;

    buffer=createImage(w,h);
    //graphic=buffer.getGraphics();

    setBackground (Color.black);

}

public void start ()
{
    // Schaffen eines neuen Threads, in dem das Spiel l?uft
    Thread th = new Thread (this);
    // Starten des Threads
    th.start ();
}







public void stop()
{

}

public void destroy()
{

}

public void run ()
{
    // Erniedrigen der ThreadPriority um zeichnen zu erleichtern
    Thread.currentThread().setPriority(Thread.MIN_PRIORITY);

    // Solange true ist l?uft der Thread weiter
    while (true)
    {
        // Ver?ndern der x- Koordinate
        repaint();

        x_pos++;
        y_pos++;
        //x2--;
        //y2--;

        // Neuzeichnen des Applets


        if(x_pos>410)
            x_pos=20;

        if(y_pos>410)
            y_pos=20;





        try
        {

            Thread.sleep (30);
        }
        catch (InterruptedException ex)
        {
            // do nothing
        }


        Thread.currentThread().setPriority(Thread.MAX_PRIORITY);
    }
}


public void paint (Graphics g)
{

    Graphics screen=null;

    screen=g;
    g=buffer.getGraphics();

    g.setColor(Color.red);


    g.fillOval(x_pos - radius, y_pos - radius, 2 * radius, 2 * radius);
    g.setColor(Color.green);




    screen.drawImage(buffer,0,0,this);

}


public void update(Graphics g)
{

    paint(g);

}

}

what change should i make.When offscreen image is drawn the previous image also remain in screen.How to erase the previous image from the screen??

© Stack Overflow or respective owner

Related posts about java