[awt]État d'une touche pressée/relâchée

État d'une touche pressée/relâchée [awt] - Java - Programmation

Marsh Posté le 05-06-2004 à 19:10:18    

Les évènements clavier dans un component se récupèrent dans les méthodes de KeyListener.
 
Je veux savoir si la touche machin est enfoncée : je suis obligé de mettre à jour dans les méthodes d'évènements une variable qui me donnera son état à tout instant ?
 
N'y a-t-il pas un truc tout fait qui donne l'état enfoncé de n'importe quelle touche ?  
 

Reply

Marsh Posté le 05-06-2004 à 19:10:18   

Reply

Marsh Posté le 06-06-2004 à 15:07:20    

Ca dépend de ce que tu veux faire

Reply

Marsh Posté le 06-06-2004 à 15:08:30    

un jeu

Reply

Marsh Posté le 06-06-2004 à 15:10:47    

en fait, pour une seule touche, c'est jouable de faire une variable d'état mais pour plusieurs.. ça m'embête de faire un tableau quoi.
 
enfin, si ya que ça comme méthode, je le ferai mais je préfère utiliser des trucs de l'API si ça existe

Reply

Marsh Posté le 06-06-2004 à 17:07:33    

fais-toi une liste FIFO pour traiter tes évènements dans ton jeu. chaque fois qu'une touche est enfoncée ou relachée ou autre évènement dans ton jeu, tu ajoute une entrée dans la file. Une classe controlleur sera chargée de défiler et dispatcher le travail a effectuer en fonction des évènements.

Reply

Marsh Posté le 06-06-2004 à 17:44:20    

Mhh.. je vais réfléchir à cette méthode merci :)

Reply

Marsh Posté le 06-06-2004 à 18:43:58    

Avec une méthode comme ça, ton jeu avance par tranche de temps unitaire (100/200 ms par exemple. c'est à tester). Dans chaque tanche, tu devras lire les évènements arrivés depuis la tranche de temps précédente, les dispatcher et les traiter, mettre à jour l'état du jeu et de l'affichage. Il faut faire attention à ne pas avoir trop de chose à faire par tranche de temps. Si par contre tu arrives à tout faire et qu'il rerste du temps jusqu'à la tranche de temps suivante, tu peux essayer de diminuer un peu le temps accordé à une tranche ou laisser telquel si la vitesse du jeu est satisfaisante.

Reply

Marsh Posté le 06-06-2004 à 20:18:42    

attends ,

Citation :


tu devras lire les évènements arrivés depuis la tranche de temps précédente


 
pourquoi ne pas updater ma pile que lors des appels des méthodes KeyListener ?
 
et même, je viens d'avoir une idée : pourquoi ne pas utiliser une ArrayList où j'ajoute/enlève les touches qui sont pressées. Genre, sur un press, j'ajoute au bout la dernière touche (quand je dis touche, je sais pas encore trop quelle sorte de classe, c'est à voir) et sur un release, je vire l'élément qui correspond à la touche lâchée.
 
Après il reste plus qu'à itérer sur la liste pour récupérer les touches pressées.
 
C'est pas bon ça ?


Message édité par raytaller le 06-06-2004 à 21:22:03
Reply

Marsh Posté le 07-06-2004 à 08:54:51    

C'est possible.
Ce que je te propose c'est pour un peu structurer ton code et permettre une maintenance facile :)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed