Petit conseil Utiliser les codes d'accès AS3

Apprenez à utiliser les codes de clé dans ActionScript 3.0 pour détecter le moment où l'utilisateur appuie sur une touche spécifique..


Aperçu du résultat final

Jetons un coup d'œil au résultat final sur lequel nous allons travailler:

Testez les réponses en appuyant sur les touches de votre clavier…


Étape 1: Ajouter des zones de texte

Ouvrez un nouveau document Flash. Ajoutez des zones de texte statiques à gauche contenant le nom des clés que vous allez détecter et des zones de texte dynamiques avec le texte "Non" à l'intérieur..

Donnez à vos zones de texte dynamiques des noms d’instance au format suivant: "keyname_txt". Les miens sont ctrl_txt, shift_txt, left_txt, up_txt, right_txt, down_txt et space_text respectivement.


Étape 2: Créer un code de base

Aller Fichier〉 Nouveau et sélectionnez Fichier Actionscript.

Maintenant, configurez la classe de document de base comme suit: (Si vous voulez en savoir plus sur les classes de document, lisez le petit conseil de Michael)

 package import flash.display.MovieClip; Classe publique KeyCodes étend MovieClip fonction publique KeyCodes () 

Étape 3: Créer les événements du programme d'écoute

Pour détecter le moment où l'utilisateur appuie sur une touche avec AS3, nous devons ajouter des écouteurs d'événements qui écoutent l'utilisateur presser et relâcher les touches. Nous pouvons le faire en ajoutant le code suivant dans notre KeyCodes () fonction constructeur:

 fonction publique KeyCodes () stage.addEventListener (KeyboardEvent.KEY_DOWN, onKeyPress); // Ajouter un écouteur d'événement à l'étape qui écoute une touche enfoncée stage.addEventListener (KeyboardEvent.KEY_UP, onKeyRelease); // Ajouter un écouteur d'événement à l'étape qui écoute une clé publiée

Avant de commencer, nous devons ajouter une ligne de code pour importer le fichier. KeyboardEvent. Ajoutez cette ligne de code ci-dessous où nous importons le MovieClip classe sur la ligne 3:

 package import flash.display.MovieClip; import flash.events.KeyboardEvent;

Étape 4: Test simple

Sous nos écouteurs, ajoutent deux fonctions qui seront appelées lorsque l'utilisateur appuiera ou relâchera une touche:

 fonction publique KeyCodes () stage.addEventListener (KeyboardEvent.KEY_DOWN, onKeyPress); // Ajouter un écouteur d'événement à l'étape qui écoute une touche enfoncée stage.addEventListener (KeyboardEvent.KEY_UP, onKeyRelease); // Ajouter un écouteur d'événement à l'étape qui écoute une clé libérée function onKeyPress (e: KeyboardEvent): void  function onKeyRelease (e: KeyboardEvent): void 

Maintenant nous pouvons ajouter un trace() pour chaque fonction, lorsque vous appuyez sur une touche, elle trace "touche enfoncée" dans le panneau de sortie et "touche relâchée" lorsque la touche est relâchée. Pour ce faire, nous pouvons ajouter le code suivant dans nos fonctions:

 fonction publique KeyCodes () stage.addEventListener (KeyboardEvent.KEY_DOWN, onKeyPress); // Ajouter un écouteur d'événement à l'étape qui écoute une touche enfoncée stage.addEventListener (KeyboardEvent.KEY_UP, onKeyRelease); // Ajouter un écouteur d'événement à l'étape qui écoute une clé libérée function onKeyPress (e: KeyboardEvent): void trace ("touche enfoncée");  function onKeyRelease (e: KeyboardEvent): void trace ("touche relachée"); 

Testez votre film (Ctrl + Entrée). Lorsque vous appuyez sur une touche, elle doit tracer "touche enfoncée" dans votre panneau de sortie et "touche relâchée" lorsque vous la relâchez..


Étape 5: Détecter les codes clés

Vous pouvez détecter la touche sur laquelle vous avez appuyé en traçant le code clé. Changer votre trace de trace ("touche enfoncée") à trace (e.keyCode) et supprimez la trace libérée par la clé. Votre code devrait maintenant ressembler à ceci:

 fonction publique KeyCodes () stage.addEventListener (KeyboardEvent.KEY_DOWN, onKeyPress); // Ajouter un écouteur d'événement à l'étape qui écoute une touche enfoncée stage.addEventListener (KeyboardEvent.KEY_UP, onKeyRelease); // Ajouter un écouteur d'événement à l'étape qui écoute une clé libérée function onKeyPress (e: KeyboardEvent): void trace (e.CodeCode);  fonction onKeyRelease (e: KeyboardEvent): void 

Désormais, lorsque vous appuierez sur une touche, le code associé à cette touche sera tracé. Si j'appuie sur la flèche gauche, il va tracer 37 dans le panneau de sortie et la barre d'espace trace 32.

Avec ces informations littéralement à portée de main, vous pouvez exécuter différents événements pour différentes clés, le tout avec un écouteur d'événements. Essayez d'ajouter ce code à votre fonction et voyez ce qui se passe lorsque vous appuyez sur la barre d'espace:

 fonction onKeyPress (e: KeyboardEvent): void trace (e.KeyCode); if (e.keyCode == 32) // Si le code clé est égal à 32 (barre d'espace) trace ("barre d'espace enfoncée"); 

Maintenant, si vous appuyez sur la barre d'espace, la trace 32 ne sera pas uniquement tracée, elle indiquera "la barre d'espace appuyée". Vous pouvez utiliser ceci pour gérer plusieurs touches différentes séparément dans une même fonction..


Étape 6: Modifier le texte sur une touche

Continuez et supprimez la trace dans l'instruction "if". Remplacez-le par ceci:

 fonction onKeyPress (e: KeyboardEvent): void trace (e.KeyCode); if (e.keyCode == 32) // Si le code clé est égal à 32 (barre d'espace) space_txt.text = "Oui"; // Change la zone de texte de la barre d'espacement en "Oui"

Maintenant, lorsque vous appuyez sur la barre d'espace, vous devriez voir le libellé de la barre d'espace passer de "Non" à "Oui".

Faites cela pour toutes les touches sauf les touches control et shift, car elles ont des moyens spéciaux d'être détectées.

 fonction onKeyPress (e: KeyboardEvent): void if (e.KeyCode == 37) // 37 est le code clé pour la flèche gauche left_txt.text = "Oui";  if (e.CodeCode == 38) // 38 est le code clé pour la flèche vers le haut up_txt.text = "Oui";  if (e.CodeCode == 39) // 39 est le code clé pour la flèche vers la droite right_txt.text = "Oui";  if (e.CodeCode == 40) // 40 est un code clé pour la flèche vers le bas down_txt.text = "Oui";  if (e.CodeClé == 32) // 32 est un code clé pour la barre d'espace space_txt.text = "Oui"; 

Étape 7: Détecter le contrôle et le décalage

Comment détecter si les touches de commande ou de décalage sont enfoncées? Chacun a une variable intégrée facile qui est automatiquement modifiée lorsque les touches sont enfoncées. Vous pouvez les détecter en utilisant le code suivant. Placez ce code sous les autres instructions "if" dans onKeyPress ().

 if (e.ctrlKey == true) ctrl_txt.text = "Oui";  if (e.shiftKey == true) shift_txt.text = "Oui"; 

Remarque: il y a aussi touche Alt, qui détectera si la touche alt est enfoncée. Cela ne fonctionnera que dans les applications Adobe AIR, car appuyer sur alt pendant la focalisation dans un fichier Flash se concentrera presque toujours sur le SWF et ne fonctionnera donc pas..


Étape 8: écrivez la fonction de libération

Pour créer la fonction release, il suffit de copier le code dans le répertoire. onKeyPress () fonctionner et juste changer quelques petites choses.

Nous devons changer tout le texte pour dire "Non" au lieu de "Oui" et vérifier si ctrlKey et touche Majuscule sont faux ne pas vrai. Voici à quoi devrait ressembler le code final:

 package import flash.display.MovieClip; import flash.events.KeyboardEvent; classe publique KeyCodes étend MovieClip fonction publique KeyCodes () stage.addEventListener (KeyboardEvent.KEY_DOWN, onKeyPress); // Ajouter un écouteur d'événement à l'étape qui écoute une touche enfoncée stage.addEventListener (KeyboardEvent.KEY_UP, onKeyRelease); // Ajouter un écouteur d'événement à l'étape qui écoute une clé libérée. Fonction onKeyPress (e: KeyboardEvent): void if (e.CodeCode == 37) // 37 est un code clé pour la flèche gauche left_txt.text = "Yes ";  if (e.CodeCode == 38) // 38 est le code clé pour la flèche vers le haut up_txt.text = "Oui";  if (e.CodeCode == 39) // 39 est le code clé pour la flèche vers la droite right_txt.text = "Oui";  if (e.CodeCode == 40) // 40 est un code clé pour la flèche vers le bas down_txt.text = "Oui";  if (e.CodeClé == 32) // 32 est un code clé pour la barre d'espace space_txt.text = "Oui";  if (e.ctrlKey == true) ctrl_txt.text = "Oui";  if (e.shiftKey == true) shift_txt.text = "Oui";  function onKeyRelease (e: KeyboardEvent): void if (e.CodeCode == 37) // 37 est le code clé pour la flèche gauche left_txt.text = "Non";  if (e.CodeCode == 38) // 38 est un code clé pour la flèche vers le haut up_txt.text = "Non";  if (e.CodeClé == 39) // 39 est le code clé pour la flèche vers la droite right_txt.text = "Non";  if (e.CodeClé == 40) // 40 est un code clé pour la flèche vers le bas down_txt.text = "Non";  if (e.CodeClé == 32) // 32 est un code clé pour la barre d'espace space_txt.text = "Non";  if (e.ctrlKey == false) ctrl_txt.text = "Non";  if (e.shiftKey == false) shift_txt.text = "Non"; 

Déclarer les fonctions à l'intérieur du constructeur signifie qu'elles seront récupérées si les écouteurs d'événements sont supprimés. Si vous préférez que cela ne se produise pas, vous pouvez les déclarer en tant que méthodes, comme suit:

 package import flash.display.MovieClip; import flash.events.KeyboardEvent; classe publique KeyCodes étend MovieClip fonction publique KeyCodes () stage.addEventListener (KeyboardEvent.KEY_DOWN, onKeyPress); // Ajouter un écouteur d'événement à l'étape qui écoute une touche enfoncée stage.addEventListener (KeyboardEvent.KEY_UP, onKeyRelease); // Ajouter un écouteur d'événement à l'étape qui écoute la publication d'une clé function publique onKeyPress (e: KeyboardEvent): void if (e.CodeCode == 37) // 37 est le code clé pour la flèche gauche left_txt.text = "Oui";  if (e.CodeCode == 38) // 38 est le code clé pour la flèche vers le haut up_txt.text = "Oui";  if (e.CodeCode == 39) // 39 est le code clé pour la flèche vers la droite right_txt.text = "Oui";  if (e.CodeCode == 40) // 40 est un code clé pour la flèche vers le bas down_txt.text = "Oui";  if (e.CodeClé == 32) // 32 est un code clé pour la barre d'espace space_txt.text = "Oui";  if (e.ctrlKey == true) ctrl_txt.text = "Oui";  if (e.shiftKey == true) shift_txt.text = "Oui";  fonction publique onKeyRelease (e: KeyboardEvent): void if (e.KeyCode == 37) // 37 est le code clé pour la flèche gauche left_txt.text = "Non";  if (e.CodeCode == 38) // 38 est un code clé pour la flèche vers le haut up_txt.text = "Non";  if (e.CodeClé == 39) // 39 est le code clé pour la flèche vers la droite right_txt.text = "Non";  if (e.CodeClé == 40) // 40 est un code clé pour la flèche vers le bas down_txt.text = "Non";  if (e.CodeClé == 32) // 32 est un code clé pour la barre d'espace space_txt.text = "Non";  if (e.ctrlKey == false) ctrl_txt.text = "Non";  if (e.shiftKey == false) shift_txt.text = "Non"; 

Conclusion

Testez votre film et tout devrait bien se passer! Si vous avez des commentaires ou des problèmes, postez-les simplement dans la section commentaires et je (ou quelqu'un d'autre) répondrai à votre question.

Merci de m'avoir lu et j'espère que cela vous a aidé à en apprendre davantage sur les pressions sur les touches dans Flash.