Java peindre des objets particuliers


J'écris un jeu en Java qui est basé sur une vue de haut en bas de la grille. Je ne suis pas très familier avec les méthodes JPanel paintComponent() et repaint() et j'ai du mal à créer une fonction de peinture d'écran rapide. Chaque tuile est un objet avec une Tuile.paintTile (g,x,y) pour peindre la tuile à (x,y) sur g. Je veux trouver un bon moyen de peindre uniquement des tuiles spécifiques, mais je ne peux pas savoir comment faire cela. J'ai une classe mondiale avec un TileAt (x, y)pour obtenir la tuile, mais chaque tentative que j'ai faite a causé bégaiement ou jeté des erreurs. Toute aide est appréciée! - Renmusxd

Edit: ce que j'ai essayé: Je ne suis pas encore très habitué aux graphiques Java, j'ai essayé d'écraser paintComponent et d'ajouter paintComponent(g,x,y) mais il n'aime pas que je n'appelle pas repaint. Je n'ai plus le code parce que je l'ai remplacé par une version paintAll. Désolé.

Author: Renmusxd, 2012-11-01

1 answers

Normalement, il est plus facile de simplement repeindre l'écran entier à chaque fois - cela devrait être assez rapide en utilisant Swing sur la plupart des machines modernes.

Si vous voulez vraiment faire des mises à jour partielles, alors la meilleure approche est probablement:

  • Créez un offscreen BufferedImage, qui devrait être de la même taille que la zone d'affichage de votre jeu (ou légèrement plus grande si vous souhaitez autoriser le défilement)
  • Dessinez vos tuiles dans cette image hors écran.
  • Lorsque vous repeignez votre vue (c'est-à-dire dans le paintComponent méthode) puis il suffit de dessiner l'ensemble bufferedimage sur l'écran en une seule fois.
 1
Author: mikera, 2012-11-01 05:05:52