Deplacement personnage

joduak Messages postés 194 Date d'inscription lundi 11 juillet 2005 Statut Membre Dernière intervention 13 avril 2007 - 20 avril 2006 à 16:27
joduak Messages postés 194 Date d'inscription lundi 11 juillet 2005 Statut Membre Dernière intervention 13 avril 2007 - 20 avril 2006 à 18:07
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

kaloway Messages postés 358 Date d'inscription jeudi 24 octobre 2002 Statut Membre Dernière intervention 13 avril 2020
20 avril 2006 à 17:09
remarque : utilise une réfèrence sur le container et non la méthode getContentPane(). ça sera moins gourmand en ressource.
0
joduak Messages postés 194 Date d'inscription lundi 11 juillet 2005 Statut Membre Dernière intervention 13 avril 2007
20 avril 2006 à 18:07
ç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?
0
Rejoignez-nous