Deplacement personnage

Signaler
Messages postés
194
Date d'inscription
lundi 11 juillet 2005
Statut
Membre
Dernière intervention
13 avril 2007
-
Messages postés
194
Date d'inscription
lundi 11 juillet 2005
Statut
Membre
Dernière intervention
13 avril 2007
-
Bonjour!

J'ai quelques difficultées à faire en sorte qu'un déplacement d'image se face de manière fluide et nette.
Que des imgaes parasites ne viennent pas se coller à l'écran.
Mon programme marche, mais par contre, en mettant en commentaire les repaint() comme ci dessous, mon perso laisse des traces sur le plateau, tandis que si je mets le repaint() dans up et down le perso 'rame'...

Si vous avez une idée, je suis là!!

Jod

Voici le code:

private JLabel label_face = new JLabel();
private ImageIcon image_face = new ImageIcon(getClass().getResource("front.gif"));

private JLabel label_derriere = new JLabel();
private ImageIcon image_derriere = new ImageIcon(getClass().getResource("back.gif"));

private int colonne=0,ligne=0;
public Deplacer()
{
//Evenement qui permet de gérer la fermeture de la fenetre
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

this.getContentPane().setLayout(null);

//Image de face
label_face.setBounds(colonne, ligne, 40, 66);
label_face.setIcon(image_face);

//Image de dos
label_derriere.setBounds(colonne, ligne, 50, 67);
label_derriere.setIcon(image_derriere);

addKeyListener(this);

//On commence par afficher l'image de face
this.getContentPane().add(label_face);
}


//Methode executer en cas pression sur le clavier avec les boutons de
//mouvement
public void keyPressed(KeyEvent e)
{
int key = e.getKeyCode();
switch (key)
{
case KeyEvent.VK_UP:
ligne-=5;
getContentPane().removeAll();
//getContentPane().repaint();
getContentPane().validate();

this.getContentPane().add(label_derriere);


label_derriere.setBounds(colonne, ligne, 50, 67);
break;

case KeyEvent.VK_DOWN:
ligne+=5;
getContentPane().removeAll();
//getContentPane().repaint();
getContentPane().validate();

this.getContentPane().add(label_face);


label_face.setBounds(colonne, ligne, 40, 66);
break;
}

2 réponses

Messages postés
358
Date d'inscription
jeudi 24 octobre 2002
Statut
Membre
Dernière intervention
13 avril 2020

remarque : utilise une réfèrence sur le container et non la méthode getContentPane(). ça sera moins gourmand en ressource.
Messages postés
194
Date d'inscription
lundi 11 juillet 2005
Statut
Membre
Dernière intervention
13 avril 2007

ça veut dire quoi : "utilise une réfèrence sur le container et non la méthode getContentPane()."

Que je dois créer une variable du type:
private Container jeu = this.getContentPane();

comme ça je mets jeu.setLayout(null) ; par exemple?