J'écris un jeu assez simple en Java, et je suis confronté à la question du scintillement très sérieux quand je joue au jeu en tant qu'applet dans un navigateur. C'est-à-dire que tous mes sprites, qui sont peints sur un fond, sont parfois affichés à l'écran, mais généralement pas - ils clignotent de façon répétée sur l'écran puis disparaissent. J'ai lu que le double tampon est probablement la solution à cela, mais j'ai du mal à l'implémenter correctement. J'utilise un JApplet comme conteneur pour un JPanel. Ce JPanel est le conteneur sur lequel les sprites et les objets du jeu sont peints - c'est-à-dire, dans la méthode paintComonent de JPanel. Dans mon JApplet, j'utilise init, peinture, et les méthodes de remplacement de mise à jour comme suit:Java JApplet Graphics Double Buffering
Image offscreen;
Graphics bufferGraphics;
Dimension dim;
public void init(){
dim = getSize();
setBackground(Color.BLACK);
offscreen = createImage(dim.width,dim.height);
bufferGraphics = offscreen.getGraphics();
}
public void paint(Graphics g){
bufferGraphics.clearRect(0,0,dim.width,dim.height);
//here is my question - i"m not sure what I should print to bufferGraphics
g.drawImage(offscreen, 0, 0, this);
}
public void update(Graphics g){
paint(g);
}
Le problème que je suis en cours d'exécution en est que, à la ligne de commentaire, je ne suis pas sûr de ce qu'il faut faire pour obtenir l'image de l'applet actuelle imprimée à bufferGraphics. J'ai lu un example dans lequel le sprite a été peint directement sur le JApplet, sans utiliser un JPanel. À la lumière de cela, je suppose que je devrais peindre le JPanel sur bufferGraphics à la ligne commentée. Suis-je sur la bonne voie ici? Toute aide est grandement appréciée; Je voudrais juste savoir n'importe quel moyen de le faire correctement.
Code reformaté, inversé si incorrect. –