|
|||||||
| AWT/SWING Forum d'entraide pour les API Swing et AWT. Avant de poster -> FAQ AWT/SWING |
![]() |
|
|
Outils de la discussion |
|
|
#1 (permalink) |
|
Invité régulier
![]() Date d'inscription: novembre 2003
Messages: 10
|
j'ai donc ma voiture sur plan 2d vu de dessus
j'appuie sur up -> ca avance down -> ca recule right -> ca tourne la voiture sur elle meme vers la droite left-> ca tourne la voiture sur elle meme vers la gauche tout se passe bien seulement le probleme reste lorsque ke j'appuie sur UP + Right ->impossible de conjuguer les 2 mouvement . c'est soit l'un soit l'autre... j'ai essayé de mettre genre dans public synchronized void keyPressed(KeyEvent e) la condition suivante : else if( (e.getKeyCode() == KeyEvent.VK_UP)&&(e.getKeyCode() == KeyEvent.VK_RIGHT)) { compostion de la translation et de la rotation } mais ca ne marche pas.. en fait l'ecouteur ecoute la derniere touche enfoncée et zape totalement les autres touches enfoncées. Comment faire??? Est ce que quelqu'un a une idee...? |
|
|
|
|
|
#2 (permalink) | |
|
Membre expérimenté
![]() ![]() Date d'inscription: juin 2002
Localisation: Paris
Âge: 32
Messages: 534
|
Je crains que tu ne puisses le faire que dans le cas d'un JMenuItem par la fonction setAccelarator().
Cependant il est écrit ceci : Citation:
__________________
TRY. * SAP BPM Expert (ABAP, J2EE) * Visit my Blog on SAP Developer Network * Visit my LinkedIn Profile CATCH cx_root. |
|
|
|
|
|
|
#3 (permalink) |
|
Membre éprouvé
![]() Date d'inscription: avril 2002
Localisation: SwissToy
Âge: 32
Messages: 402
|
Lut,
Un p'tit coup de main... keypressed: up -> vitesse d'avance = 10 m/s (par exemple) gauche -> vitesse de rotation = 90°/s (par exemple, tu peux aussi le faire en rad/s) même principe pour bas, droite keyreleased: up -> vitesse d'avance = 0 m/s gauche -> vitesse de rotation = 0°/s même principe pour bas, droite Non? |
|
|
|
|
|
#4 (permalink) |
|
Membre Confirmé
![]() Date d'inscription: mars 2003
Localisation: IDF
Messages: 254
|
Salut,
gege2mars, ca marche pas pour une bonne raison : quand on appuie sur deux touches, le programmes cree deux evenements qui vont etre traites l'un apres l'autre. Donc dans la fonction test, tu n'as qu'une seule source. Une solution possible (je ne dis pas que c'est la meilleure) peut etre de creer un tableau de booleens pour chaque touche, et a changer l'etat du boolean correspondant dans la fonction keyPressed(). Code :
boolean keyUp=false, keyDown=false, keyLeft=false, keyRight=false; public synchronized void keyPressed(KeyEvent evt){ if(evt.getKeyCode()==KeyEvent.VK_UP) keyUp = true; // ... } public synchronized void keyReleased(KeyEvent evt){ if(evt.getKeyCode()==KeyEvent.VK_UP) keyUp = false; // ... } A+ |
|
|
|
|
|
#5 (permalink) |
|
Invité régulier
![]() Date d'inscription: mai 2002
Messages: 13
|
En accord avec Kangourou,
tu peux faire quelque chose du genre : Code :
boolean keyUp=false, keyDown=false, keyLeft=false, keyRight=false; public synchronized void keyPressed(KeyEvent evt) { if(evt.getKeyCode() == KeyEvent.VK_UP) keyUp = true; // ... nextPos(); } public synchronized void keyReleased(KeyEvent evt) { if(evt.getKeyCode() == KeyEvent.VK_UP) keyUp = false; // ... nextPos(); } private void nextPos() { if(keyUp){ if(keyLeft){ //... }else if(keyRight){ //... } }else if (keyDown){ //............. } repaint(); } coco |
|
|
|
|
![]() |
![]() |
||
[KeyEvent] plusieurs touches simultanées enfoncées
|
||
| Outils de la discussion | |
|
|