[Exception]Double buffering & NullPointerException
J'avais posté à propos d'un problème de scrolling, ça été résolu avec le double buffering. c'était ici :
http://www.developpez.net/forums/viewtopic.php?t=218987
Mais depuis l'appel à update(g) provoque une NullPointerException, qqs secondes après le démarrage du programme (qui affiche juste un écran).
J'avais cette erreur qd je faisais repaint() pour rien, mais même en les enlevant, ça fait l'erreur (qui ne stoppe pas le prog).
J'ai fait comme ça :
Dans la classe Jeu :
Code:
1 2 3
|
private Image backbuffer = null;
private Graphics backg = null; |
Dans le construteur Jeu() :
Code:
1 2 3 4 5 6
|
backbuffer = createImage(largeur, hauteur);
backg = backbuffer.getGraphics();
backg.setColor(Color.black);
afficheEcranTitre(backg); |
Dans afficheEcranTitre(backg), je dessine dans backg.
Et à la fin je fais un repaint();
Et c'est la-dedans que l'exception apparaît :
Code:
1 2 3 4 5 6 7 8
|
public void paint(Graphics g) {
update(g); // bug après qqs secondes
}
public void update(Graphics g) {
g.drawImage(backbuffer, 0, 0, this);
} |
L'exception complète :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
java.lang.NullPointerException
at sun.java2d.pipe.DrawImage.copyImage(Unknown Source)
at sun.java2d.pipe.DrawImage.copyImage(Unknown Source)
at sun.java2d.SunGraphics2D.drawImage(Unknown Source)
at sun.java2d.SunGraphics2D.drawImage(Unknown Source)
at Jeu.update(Jeu.java:146)
at Jeu.paint(Jeu.java:139)
at sun.awt.RepaintArea.paint(Unknown Source)
at sun.awt.windows.WComponentPeer.handleEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source) |
merci