[débutant] Gestion images pour un jeu
Bonjour,
voilà, je fais un affichage graphique en Swing à base de JLabels qui contiennent des ImageIcon.
Le but final est d'avoir un décor avec un personnage qui peut s'y promener, et, changer le décor quand le personnage arrive au bord de l'image.
Aperçu de ce que j'ai pour l'instant :
http://img112.imageshack.us/img112/5280/apercuoc2.jpg
Les problèmes:
- J'aimerais faire en sorte que lorsque le personnage passe devant un objet, il apparaisse devant, mais qu'il apparaisse derrière lorsqu'il passe derrière (lorsqu'il remonte). Or la "priorité" des JPanel est définie par l'ordre dans lequel ils sont insérés.
Y a-t-il une façon de changer cet ordre sans avoir à tous les retirer, et tous les remettre dans un ordre différent ?
- Pour faire changer de décor, il faut que je vide le JComponent de l'image. J'ai cherché dans la doc, mais je n'ai rien vu qui ressemblait à un clear()...
Une méthode pour faire ceci existe-t-elle ?
- Il est fort possible que je m'y soit mal pris dans mes choix (JPanel, JCOmponent), mais je ne sais pas vraiment faire autrement. Si vous voyez un meilleur moyen de s'y prendre, et plus pratique, n'hésitez pas à m'en faire part.
Code:
1 2 3 4 5 6 7 8
| //futur conteneur du niveau
Niveau niveau;
//futur conteneur des éléments de décor
ElementDuDecor elements[];
//futur conteneur des obstacles du décor
Obstacle obstacles[]; |
Les tableaux sont remplis en lisant des fichiers XML contenant les caractéristiques du décor.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| //configuration de la fenêtre
setSize(800,600);
setTitle("interface");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JComponent contentPane = (JComponent)getContentPane();
contentPane.setLayout(null);
//fin configuration de la fenêtre
//insertion du personnage
contentPane.add(perso);
perso.setBounds(0,200,75,75);
//tempLabel,tempElement: éléments temporaires servant dans la boucle d'insertion des éléments
JLabel tempLabel;
ElementDuDecor tempElement;
//i: itérateur
int i=0;
//insertion des éléments du décor
while(i<(elements.length))
{
tempElement=elements[i];
tempLabel=new JLabel(new ImageIcon(tempElement.nomDuFichierImage));
contentPane.add(tempLabel);
tempLabel.setBounds(tempElement.x,tempElement.y,tempElement.largeur,tempElement.hauteur);
i++;
}//fin insertion des éléments du décor |
Merci d'avance pour toute aide :)