Hallo
Habe eine Klasse Display von Canvas abgeleitet in dieser laeuft ein Thread welcher in einer endlosschleife repaint() aufruft. Es wird Double Buffered gezeichnet.
Mein Problem ist das in die update Meyhode nur 2 mal hereingegangen wird. Die Endlosschleife laeuft jedoch permanent d.h ab dem dritten aufruf von repaint() wird nichts mehr gezeichnet.(ausprobiert)
Woran koennte das liegen?
Habe eine Klasse Display von Canvas abgeleitet in dieser laeuft ein Thread welcher in einer endlosschleife repaint() aufruft. Es wird Double Buffered gezeichnet.
Mein Problem ist das in die update Meyhode nur 2 mal hereingegangen wird. Die Endlosschleife laeuft jedoch permanent d.h ab dem dritten aufruf von repaint() wird nichts mehr gezeichnet.(ausprobiert)
Woran koennte das liegen?
Code:
import java.awt.Canvas;
import java.awt.Graphics;
import java.awt.Image;
class Display extends Canvas implements Runnable{
int cnt=0;
private Image dbImage;
private Graphics dbGraphics;
int appletsize_x=800;
int appletsize_y=600;
int v_x0,v_x1,v_x2;
int v_y0,v_y1,v_y2;
int x_pos = 60;
int y_pos = 300;
int radius = 30;
Thread th;
public void Display(){};
public void startAnimation()
{
Thread th = new Thread(this);
th.start();
}
public void run()
{
while (true) {
cnt++;
repaint();
try {
Thread.sleep(40);
} catch (InterruptedException e) {
//nichts
}
}
}
public void update(Graphics g)
{
System.out.println("test1");
//Double-Buffer initialisieren
if (dbImage == null) {
dbImage = createImage(
getSize().width,
getSize().height
);
dbGraphics = dbImage.getGraphics();
}
//Hintergrund löschen
dbGraphics.setColor(getBackground());
dbGraphics.fillRect(0,0,getSize().width,getSize().height
);
//Vordergrund zeichnen
dbGraphics.setColor(getForeground());
paint(dbGraphics);
//Offscreen anzeigen
g.drawImage(dbImage,0,0,this);
}
public void paint(Graphics g)
{
System.out.println("test2");
g.drawOval(x_pos-radius+cnt, y_pos-radius, 2*radius, 2*radius);
}
}