Apprenez à utiliser les codes de clé dans ActionScript 3.0 pour détecter le moment où l'utilisateur appuie sur une touche spécifique..
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…
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.
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 ()
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;
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..
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..
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";
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..
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";
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.