Jeu Vidéo 2D java : lien entre keyListener et objet Swing Timer
Fermé
Thom1992
-
Modifié par KX le 24/07/2016 à 17:42
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 - 24 juil. 2016 à 18:22
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 - 24 juil. 2016 à 18:22
A voir également:
- Jeu Vidéo 2D java : lien entre keyListener et objet Swing Timer
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel football - Télécharger - Jeux vidéo
- Montage video windows - Guide
- Comment télécharger une vidéo youtube - Guide
- 94 jeu - Télécharger - Puzzle & Réflexion
1 réponse
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
24 juil. 2016 à 18:22
24 juil. 2016 à 18:22
Bonjour,
"j'ai trouvé ce code sur internet"
Visiblement tu es mal tombé, tu aurais pu trouver mieux...
"je ne comprends pas l'intérêt de l'objet Timer"
Il ne sert à rien car il n'est jamais utilisé. En plus il est mal construit.
"pourquoi on utilise la méthode actionPerformed, plutôt que d'utiliser simplement la méthode keyPressed de la class keyListener."
actionPerformed ne sert à rien non plus, car on ne peut pas associer un ActionListener à un JPanel (il n'y a pas de méthode addActionListener).
De plus je t'invites à :
Exemple :
"j'ai trouvé ce code sur internet"
Visiblement tu es mal tombé, tu aurais pu trouver mieux...
"je ne comprends pas l'intérêt de l'objet Timer"
Il ne sert à rien car il n'est jamais utilisé. En plus il est mal construit.
"pourquoi on utilise la méthode actionPerformed, plutôt que d'utiliser simplement la méthode keyPressed de la class keyListener."
actionPerformed ne sert à rien non plus, car on ne peut pas associer un ActionListener à un JPanel (il n'y a pas de méthode addActionListener).
De plus je t'invites à :
- utiliser plutôt un switch qu'une succession de if
- utiliser un Component plutôt qu'un JPanel (inutile)
- implémenter le KeyListener dans une classe à part
- ne pas nommer ta classe Character ni avec aucun autre nom de classe déjà existant dans java.lang
Exemple :
import java.awt.Color; import java.awt.Component; import java.awt.Graphics; public class CharacterComponent extends Component { private static final long serialVersionUID = 1L; @Override public void paint(Graphics g) { super.paint(g); g.setColor(Color.BLUE); g.fillRect(0, 0, getWidth(), getHeight()); } }
import java.awt.Component; import java.awt.Rectangle; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; public class TranslateKeyListener extends KeyAdapter { private final Component component; public TranslateKeyListener(Component component) { this.component = component; } @Override public void keyPressed(KeyEvent e) { Rectangle bounds = component.getBounds(); switch (e.getKeyCode()) { case KeyEvent.VK_UP: bounds.y -= 2; break; case KeyEvent.VK_DOWN: bounds.y += 2; break; case KeyEvent.VK_LEFT: bounds.x -= 2; break; case KeyEvent.VK_RIGHT: bounds.x += 2; break; default: return; } component.setBounds(bounds); } }
import javax.swing.JFrame; public class Test { public static void main(String[] args) { CharacterComponent character = new CharacterComponent(); character.setBounds(200, 200, 100, 100); JFrame frame = new JFrame(); frame.setLayout(null); frame.setSize(500, 500); frame.add(character); frame.addKeyListener(new TranslateKeyListener(character)); frame.setVisible(true); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } }