BufferStrategy dans un applet - Java - Programmation
Marsh Posté le 12-06-2004 à 13:44:25
Pour les applets, je te conseille d'utiliser la technique de double buffering software, c'est à dire de dessiner dans une Image, et de la peindre dans la méthode paint exemple :
Code :
|
Donc, tout ton processus de dessin se fait dans une image invisible (bufferImage), et quand tout est fini, hop tu la peinds dans le Graphics de l'applet et elle est affichée.
Marsh Posté le 12-06-2004 à 14:09:00
C'est effectivement vers quoi je me suis tourné Mais j'ai l'impression qu'au niveau vitesse, c'est pas très optimal... La vitesse varie beaucoup d'un PC à l'autre, enfin je ne sais pas si c'est vraiment dû à ça...
Marsh Posté le 12-06-2004 à 14:21:34
je crois avoir lu que justement, contre toute attente, le double buffering software était plus rapide que le hardware
Marsh Posté le 11-06-2004 à 13:11:52
Bpnjour !
Je n'arrive pas à utiliser de BufferStrategy dans un applet, sans ouvrir de nouvelle fenêtre...
Voilà le code très simple que je compile, et le problème c'est qu'une nouvelle fenêtre s'ouvre (ce qui est normal puisque Toto est une Frame). J'aimerais bien que tout s'éxecute directement sur la page web...
public class Exemple extends Applet
{
public void init()
{
new Toto();
}
}
class Toto extends Frame
{
int x;
private RenderingThread render;
private BufferStrategy strategy;
private Graphics backBuffer;
public Toto()
{
System.out.println("Toto" );
render = new RenderingThread();
x = 50;
setSize(400, 400);
setVisible(true);
setIgnoreRepaint(true);
createBufferStrategy(2);
strategy = getBufferStrategy();
backBuffer = strategy.getDrawGraphics();
render.start();
}
private void renderingRoutine()
{
x++;
if(x > 180)
x = 30;
backBuffer.setColor(Color.white);
backBuffer.fillRect(0,0,getWidth(),getHeight());
backBuffer.setColor(Color.black);
backBuffer.fillOval(100,100,x,x);
strategy.show();
}
class RenderingThread extends Thread {
public void run() {
while(true)
{
try {
sleep(20);
renderingRoutine();
} catch (java.lang.InterruptedException e){}
}
}
}
}
Merci d'avance !
Message édité par City_Hunter le 11-06-2004 à 13:15:47