Stefan774
Grünschnabel
Hallo zusammen ich habe Probleme bei einem Applet ich hab mal eine Applikation geschrieben die mit Swing arbeitet und BufferStrategy einsetzt damit die Bewegungen nicht mehr flimmern, hat alles gut geklappt soweit. Aber jetzt wollt ich das selbe Prinzip auf einem Applet durchziehen und es will einfach nicht funktionieren ich bin ratlos. Ich hab schon einbischen gegoogelt aber nichts wirklich brauchbares gefunden. Das einzige was ich schon weiß ist dass man die BufferStrategy mit einem Canvas verschrauben muss und das Canvas dann dem Applet adden. Hab ich auch gemacht ich kann den Canvas (grau) sehen aber es wird einfach nichts gezeichnet. Wäre super wenn mir jemand eine Tipp geben könnte wich ich das doch noch schaffe.Ich weiß es gibt andere Möglichkeiten den Double Buffer zu realisieren aber ich fand das mit der Bufferstrategy eigentlich sehr confortabel.
Hier mein Ansatz:
Hier mein Ansatz:
PHP:
import java.applet.Applet;
import java.awt.Canvas;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.image.*;
public class BufferStrategyTest extends Applet implements Runnable {
Canvas can = new Canvas();
final int width = 500;
final int height = 500;
int x = 0;
BufferStrategy strategy;
final Dimension d = new Dimension(width,height);
public void init(){
this.setSize(d);
}
public void start(){
if (strategy == null){
this.setIgnoreRepaint(true);
this.setLayout(null);
can.setBackground(Color.gray);
can.setIgnoreRepaint(true);
can.setBounds(5, 5, 200, 200);
can.requestFocus();
this.add(can);
}
Thread go = new Thread(this);
go.start();
}
public void stop(){
}
public void destroy(){
}
public void creatStrategy(){
can.createBufferStrategy(1);
strategy = can.getBufferStrategy();
}
@Override
public void run() {
creatStrategy();
while (true){
paintWorld();
x++;
try {
Thread.sleep(50);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public void paintWorld(){
Graphics g = can.getGraphics();
g.setColor(Color.red);
g.drawRect(x, 10, 50, 50);
g.drawString("Hallo Applet", 20, 15);
can.paint(g);
strategy.show();
}
}