IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

avec Java Discussion :

Bug sur KeyReleased()


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juin 2009
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 30
    Par défaut [Résolu]Bug sur KeyReleased()
    Bonjour à tous,

    J'ai un problème qui commence à me taper sur le système...
    J'ai déjà posté, l'ai résolu avec l'aide de certains d'entre vous, et le bug est revenu.

    D'abord un peu de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
     
    import java.awt.event.KeyEvent;
    import java.awt.event.KeyListener;
    import javax.swing.JFrame;
     
    public class Touches implements KeyListener {
    	// Variables
    	private JFrame frame;
    	boolean up, down, left, right;
     
    	// Constructeur
    	public Touches() {
    		frame = new JFrame();
    		frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
    		frame.setLocationRelativeTo(null);
    		frame.setSize(200,200 );
    		frame.addKeyListener( this );
    		frame.setVisible( true );
    		up = down = left = right = false; }
     
    	// KeyPressed()
    	public void keyPressed( KeyEvent e ) {
    		switch( e.getKeyCode() ) {
    			case KeyEvent.VK_UP:
    				if( ! up ) System.out.println( "up" );
    				up = true;
    				break;
    			case KeyEvent.VK_DOWN:
    				if( ! down ) System.out.println( "down" );
    				down = true;
    				break;
    			case KeyEvent.VK_LEFT:
    				if( ! left ) System.out.println( "left" );
    				left = true;
    				break;
    			case KeyEvent.VK_RIGHT:
    				if( ! right ) System.out.println( "right" );
    				right = true;
    				break;
    			default: }}
     
    	// KeyReleased()
    	public void keyReleased( KeyEvent e )
    	{
    		switch( e.getKeyCode() ) {
    			case KeyEvent.VK_UP:
    				System.out.println( "up released" );
    				up = false;
    				break;
    			case KeyEvent.VK_DOWN:
    				System.out.println( "down released" );
    				down = false;
    				break;
    			case KeyEvent.VK_LEFT:
    				System.out.println( "left released" );
    				left = false;
    				break;
    			case KeyEvent.VK_RIGHT:
    				System.out.println( "right released" );
    				right = false;
    				break;
    			default: }}
     
    	// KeyTyped()
    	public void keyTyped( KeyEvent e ) {}
     
    	// Méthode main()
    	public static void main( String[] arg ) {
    		new Touches(); }
     
    }
    Pour résumer, la classe ci dessus affiche dans la fenêtre de log d'Eclipse (mon IDE) les touches enfoncées et les touches relâchées
    J'appuie sur RIGHT et UP et je les maintiens enfoncées, j'ai les logs suivantes :
    right
    up


    Je relâche seulement UP, et voici les logs :
    up released
    right released


    RIGHT est toujours enfoncée.


    Au début, une désinstallation/reinstallation de ma JRE (1.6.0_14) a réglé le problème.
    Le lendemain, le bug est revenu.
    Depuis, j'ai désinstallé, réinstalle, testé toutes les versions des JRE 1.6 (a savoir l'update 11, 12, 13, 14), c'est pareil.

    J'ai formaté, tout réinstallé vendredi dernier : ça marche
    Ce matin, j'essaie, ça ne marche plus.
    Changement entre vendredi et aujourd'hui : install FlashPlayer + Firefox + forcément un redémarrage
    Aujourd'hui, j'ai de nouveau testé plusieurs versions de JRE, idem.

    Bref le problème vient du PC je pense, mais je vois vraiment pas d'où.
    Quelqu'un a t-il le même problème ? Une idée ?

  2. #2
    Membre Expert
    Avatar de visiwi
    Profil pro
    Inscrit en
    Février 2008
    Messages
    1 052
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 1 052
    Par défaut
    Salut,

    Ce n'est pas un bug. C'est dû à l'auto-repeat. Les KeyListener ne sont pas fait pour ça, mais pour du texte ou des actions (une informatique de gestion lambda).
    Pour obtenir un résultat aux petits oignons, utilise plutôt une librairie portable de gestion des entrés (utilisé dans les jeux vidéo) comme JInput par exemple. Là, tu pourra maîtriser le tintouin.

  3. #3
    Membre averti
    Inscrit en
    Juin 2009
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 30
    Par défaut
    Merci de ta réponse, je vais creuser cela.
    Mais cela n'est-il pas un peu lourd pour juste gérer un déplacement clavier ?

  4. #4
    Membre Expert
    Avatar de visiwi
    Profil pro
    Inscrit en
    Février 2008
    Messages
    1 052
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 1 052
    Par défaut
    C'est un peu plus lourd effectivement, mais ce n'est pas non plus le pérou.
    Qu'est ce que tu appel un "déplacement clavier" ?

  5. #5
    Membre averti
    Inscrit en
    Juin 2009
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 30
    Par défaut
    Par exemple déplacer un vaisseau dans un jeu type R-Type avec les flèches du clavier + 2-3 touches genre tirer, looping, ou changement d'arme.
    Enfin c'est le jeu/tuto sur lequel j'apprend en ce moment, et JInput m'a l'air bien compliqué pour mon niveau de connaissance (je débute).

    Ce qui est bizarre, c'est que ça a marché, et d'autres n'ont pas ce problème...

  6. #6
    Membre Expert
    Avatar de visiwi
    Profil pro
    Inscrit en
    Février 2008
    Messages
    1 052
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 1 052
    Par défaut
    Cela fait un moment que je cours après une gestion clavier avec KeyListener pour des jeux. Je n'ai jamais trouvé quelque chose de portable.
    Le comportement KeyListener semble différé un peu suivant les OS.
    Ce qui est bizarre, c'est que ça a marché, et d'autres n'ont pas ce problème...
    Si tu as une source qui le fait, je suis preneur.

    Il existe un super tuto en PDF sur JInput (en anglais) sur le net. Je n'ai plus l'adresse mais tu le trouvera avec google.

Discussions similaires

  1. [RegEx] Petit Bug sur Expression Régulière
    Par Delphy113 dans le forum Langage
    Réponses: 2
    Dernier message: 25/09/2005, 20h48
  2. [Plugin][VE]Bug sur Eclipse Visual Project Editor
    Par capitaine_choc dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 31/05/2005, 14h51
  3. Bug sur glColor3i !
    Par ZiZouJH dans le forum OpenGL
    Réponses: 23
    Dernier message: 04/06/2004, 10h21
  4. Bug sur la prorpiété required d'un TField avec ADO ???
    Par denrette dans le forum Bases de données
    Réponses: 6
    Dernier message: 04/11/2003, 11h04
  5. Page de rapport de bug sur le site de Sun
    Par piff dans le forum Général Java
    Réponses: 1
    Dernier message: 03/03/2003, 18h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo