Retour à la page d'accueil

Flash 8: Détecter les touches du clavier

Auteur: Jérôme Forget. Publié le 30 juillet 2006.

Pour détecter les touches du clavier dans Flash, on utilisera la classe ActionScript Key. La classe Key détecte l'enfoncement des touches du clavier et leur relâchement, et indique quelle touche a été enfoncée. Lorsque la classe Key détecte une événement du clavier, elle avertit tous les objets d'écoute qui sont liés à cette classe. Un objet d'écoute est un objet ActionScript qui répond aux événements d'un autre objet auquel il est lié. Nous devrons ainsi informer l'objet d'écoute des actions à exécuter lorsque l'événement se produit.

La classe Key supporte deux événements du clavier: lorsqu'une touche est enfoncée et lorsqu'elle est relâchée. Pour gérer ces deux événements, on fera appel aux gestionnaires d'événement onKeyDown() et onKeyUp().

Si vous n'avez jamais défini d'objet d'écoute auparavant, ne soyez pas inquiets. Cela exige que quelques lignes de code. L'exemple suivant définit un objet d'écoute ainsi que des méthodes onKeyDown() et onKeyUp():

var oClavierEcoute:Object = new Object(); oClavierEcoute.onKeyDown = function():Void { // Le code que vous voulez exécuter lorsqu'une touche est enfoncée, comme par exemple: trace("Une touche est enfoncée."); }; oClavierEcoute.onKeyUP = function():Void { // Le code que vous voulez exécuter lorsqu'une touche est relâchée, comme par exemple: trace("La touche a été relâchée."); };

Une fois l'objet d'écoute défini, la prochaine étape consiste à lier l'objet d'écoute avec la classe Key. Cette étape permettra à la classe Key de savoir quel objet informer d'un événement. On utilisera la méthode addListener(), en lui donnant comme seul paramètre l'objet d'écoute en question.

Key.addListener(oClavierEcoute);

Il arrive fréquemment qu'en plus de savoir qu'une touche a été enfoncée, nous voulons également savoir quelle touche a été appuyée. La méthode getCode() de la classe Key existe pour cette raison. La méthode getCode() retournera le code numérique qui correspond à la touche qui a été enfoncée, et la méthode getAscii() retournera le code ASCII qui correspond à la touche. Pour les caractères majuscules et les touches numériques, les méthodes getCode() et getAscii() retourneront les mêmes valeurs. Si vous devez différencier les caractères majuscules des minuscules, utilisez getAscii(). Pour les touches spéciales comme Ctrl, Option, Enter ou les flèches, utilisez plutôt getCode().

Il est possible d'utiliser la méthode charCodeAt() de la classe String pour retirer le code ASCII d'un caractère afin de le comparer avec le code d'une touche du clavier. L'exemple suivant crée un objet d'écoute qui vérifie si l'utilisateur a enfoncé la touche r:

var oClavierEcoute:Object = new Object(); oClavierEcoute.onKeyDown = function():Void { // Crée une chaîne avec le caractère à comparer var sCaractere:String = "r"; // Extrait la code de ce caractère var nCode:Number = sCaractere.charCodeAt(0); // Compare le code du caractère avec celui de la touche enfoncée if(Key.getAscii() == nCode) { trace("Vous avez appuyé la touche r."); } }; Key.addListener(oClavierEcoute);

La méthode getCode() retourne les codes de plusieurs touches non-alphanumériques, comme les flèches du clavier. Afin de vous simplifier encore plus la vie, la classe Key fournit plusieurs constantes pour les touches communes comme Enter, Shift, Up, Down, etc. Vous trouverez la liste complète de ces constantes dans l'aide de Flash pour la classe Key. Le code suivant crée un objet d'écoute qui détecte si la flèche droite a été enfoncée:

var oClavierEcoute:Object = new Object(); oClavierEcoute.onKeyDown = function():Void { if(Key.getCode() == Key.RIGHT) { trace("Vous avez appuyé la flèche droite."); } }; Key.addListener(oClavierEcoute);
À propos | Formation | Ressources | Exercices
© 2004-2007, Jérôme Forget (ajouter au carnet d'adresses). Certains droits réservés.
Sous licence Creative Commons «Paternité - Partage des Conditions Initiales à l'Identique 2.0 Canada».
 Photos : stock.xchngPolitique de confidentialitéDéclaration qualité. Valide: XHTML | CSS.