Sfat rapid utilizând codurile AS3 Keycodes

Aflați cum să utilizați codurile cheie în ActionScript 3.0 pentru a detecta când utilizatorul apasă o anumită cheie.


Rezultatul final al rezultatelor

Să aruncăm o privire asupra rezultatului final pe care îl vom strădui:

Testați răspunsurile apăsând tastele de pe tastatură ...


Pasul 1: Adăugați casete text

Deschideți un nou document Flash. Adăugați casete de text statice în partea stângă, care au numele cheilor pe care le veți detecta și cutiile de text dinamice cu textul "Nu" în interiorul lor.

Dați denumirile instanțelor dvs. de casete dinamice cu următorul format: "keyname_txt"Sunt al meu ctrl_txt, shift_txt, left_txt, up_txt, right_txt, down_txt și space_text respectiv.


Pasul 2: Creați codul de bază

Merge Fișier> Nou și selectați Fișierul Actionscript.

Acum configurați clasa de documente de bază astfel: (Dacă doriți să aflați despre clasele de documente citiți Sfat rapid al lui Michael)

 pachet import flash.display.MovieClip; clasa publică KeyCodes extinde MovieClip funcția publică KeyCodes () 

Pasul 3: Creați evenimentele Listener

Pentru a detecta când utilizatorul apasă o cheie cu AS3, trebuie să adăugăm ascultători de evenimente care asculta pentru un utilizator care apasă și eliberează cheile. Putem face acest lucru prin adăugarea următoarei bucăți de cod în interiorul nostru Keycodes () funcția constructor:

 funcția publică KeyCodes () stage.addEventListener (KeyboardEvent.KEY_DOWN, onKeyPress); // Adăugați un ascultător al evenimentului pe scena care ascultă pentru o cheie care este apăsată stage.addEventListener (KeyboardEvent.KEY_UP, onKeyRelease); // Adăugați un ascultător al evenimentului pe scena care ascultă pentru eliberarea unei chei

Înainte de a continua, trebuie să adăugăm o linie de cod pentru a importa KeyboardEvent. Adăugați acest rând de cod de mai jos unde importem MovieClip clasa pe linia 3:

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

Pasul 4: Test simplu

Sub ascultătorii noștri se adaugă două funcții care vor fi apelate când utilizatorul apasă sau eliberează o cheie:

 funcția publică KeyCodes () stage.addEventListener (KeyboardEvent.KEY_DOWN, onKeyPress); // Adăugați un ascultător al evenimentului pe scena care ascultă pentru o cheie care este apăsată stage.addEventListener (KeyboardEvent.KEY_UP, onKeyRelease); // Adăugați un ascultător al evenimentului pe scena care asculta pentru o funcție de eliberare a unei chei peKeyPress (e: KeyboardEvent): void  funcția onKeyRelease (e: KeyboardEvent): void 

Acum putem adăuga a urmă() la fiecare funcție, atunci când apăsați o tastă, urmăriți "tasta apăsată" în panoul de ieșire și tasta "eliberată" când cheia este eliberată. Pentru a face acest lucru putem adăuga următorul cod în funcțiile noastre:

 funcția publică KeyCodes () stage.addEventListener (KeyboardEvent.KEY_DOWN, onKeyPress); // Adăugați un ascultător al evenimentului pe scena care ascultă pentru o cheie care este apăsată stage.addEventListener (KeyboardEvent.KEY_UP, onKeyRelease); // Adăugați un ascultător al evenimentului pe scena care asculta pentru o funcție eliberată pe tastaKeyPress (e: KeyboardEvent): void trace ("apăsat");  funcția onKeyRelease (e: KeyboardEvent): void trace ("key released"); 

Testați-vă filmul (Ctrl + Enter). Când apăsați o tastă, ar trebui să urmăriți "tasta apăsată" în panoul de ieșire și "cheia eliberată" când o eliberați.


Pasul 5: Detectați codurile cheie

Puteți detecta ce tastă a fost apăsată prin urmărirea codului cheie. Schimbați urmărirea urmări ("apăsat") la trace (e.keyCode) și eliminați următoarea trasă. Codul dvs. ar trebui să arate astfel:

 funcția publică KeyCodes () stage.addEventListener (KeyboardEvent.KEY_DOWN, onKeyPress); // Adăugați un ascultător al evenimentului pe scena care ascultă pentru o cheie care este apăsată stage.addEventListener (KeyboardEvent.KEY_UP, onKeyRelease); // Adăugați un ascultător al evenimentului pe scena care asculta pentru o funcție de eliberare a cheii peKeyPress (e: KeyboardEvent): void trace (e.keyCode);  funcția onKeyRelease (e: KeyboardEvent): void 

Acum, când apăsați o tastă, va fi urmărită codul care se referă la acea cheie specifică. Dacă apăs pe săgeata din stânga, va fi urmărită 37 în panoul de ieșire și bara de spațiu vor fi urmărite 32.

Cu aceste informații literalmente la îndemâna dvs. puteți executa diferite evenimente pentru diferite chei, toate cu un singur ascultător de evenimente. Încercați să adăugați acest cod la funcția dvs. și să vedeți ce se întâmplă atunci când apăsați bara de spațiu:

 funcția onKeyPress (e: KeyboardEvent): void trace (e.keyCode); dacă (e.keyCode == 32) // Dacă codul cheie este egal cu 32 (bara de spațiu) trace ("bara de spațiu apăsată"); 

Acum, dacă apăsați bara de spațiu, nu veți urmări doar 32, va fi urmărită "bara de spațiu apăsată". Puteți utiliza acest lucru pentru a trata mai multe chei diferite separat în cadrul aceleiași funcții.


Pasul 6: Modificarea textului la apăsarea tastei

Mergeți mai departe și ștergeți urmă în interiorul instrucțiunii "if". Înlocuiți-l cu acesta:

 funcția onKeyPress (e: KeyboardEvent): void trace (e.keyCode); dacă (e.keyCode == 32) // Dacă codul cheie este egal cu 32 (spațiu) space_txt.text = "Da"; // Schimbați caseta text a barei de spațiu în "Da"

Acum, când apăsați bara de spațiu, ar trebui să vedeți schimbarea etichetei barei de spațiu de la "Nu" la "Da".

Faceți acest lucru pentru toate cheile, cu excepția comenzii și a schimbării, deoarece acestea au modalități speciale de a fi detectate.

 funcția onKeyPress (e: KeyboardEvent): void if (e.keyCode == 37) // 37 este codul cheie pentru săgeata stânga left_txt.text = "Da";  dacă (e.keyCode == 38) // 38 este codul cheie pentru săgeata sus up_txt.text = "Da";  dacă (e.keyCode == 39) // 39 este codul cheie pentru săgeata dreapta right_txt.text = "Da";  dacă (e.keyCode == 40) // 40 este codul cheie pentru săgeata în jos down_txt.text = "Da";  dacă (e.keyCode == 32) // 32 este codul cheie pentru spațiul de spațiu space_txt.text = "Da"; 

Pasul 7: Detectați controlul și schimbarea

Cum detectăm dacă butoanele de comandă sau schimbare sunt apăsate? Fiecare are o variabilă ușor de încorporat, care se schimbă automat atunci când tastele sunt apăsate. Le puteți detecta utilizând următorul cod. Puneți acest cod sub celelalte instrucțiuni "if" în onkeypress ().

 dacă (e.ctrlKey == true) ctrl_txt.text = "Da";  dacă (e.shiftKey == true) shift_txt.text = "Da"; 

Notă: există deasemenea altKey, care va detecta dacă tasta alt este apăsată. Acest lucru va funcționa numai în aplicațiile Adobe AIR ca apăsând altul, în timp ce focalizarea într-un fișier Flash va fi aproape întotdeauna focalizată din SWF și, prin urmare, nu funcționează.


Pasul 8: Scrieți funcția de eliberare

Pentru a crea funcția de lansare tot ce trebuie să faceți este să copiați codul în interiorul onkeypress () funcția și schimba doar câteva lucruri.

Trebuie să schimbăm tot textul pentru a spune "Nu" în loc de "Da" și să verificați dacă ctrlKey și shiftKey sunteți fals nu Adevărat. Acesta ar trebui să arate codul final:

 pachet import flash.display.MovieClip; import flash.events.KeyboardEvent; clasa publica KeyCodes extinde MovieClip functie publica KeyCodes () stage.addEventListener (KeyboardEvent.KEY_DOWN, onKeyPress); // Adăugați un ascultător al evenimentului pe scena care ascultă pentru o cheie care este apăsată stage.addEventListener (KeyboardEvent.KEY_UP, onKeyRelease); // Adăugați un ascultător al evenimentului la etapa care asculta pentru o funcție eliberată pe tastaKeyPress (e: KeyboardEvent): void if (e.keyCode == 37) // 37 este codul cheie pentru săgeata stânga left_txt.text = "Da „;  dacă (e.keyCode == 38) // 38 este codul cheie pentru săgeata sus up_txt.text = "Da";  dacă (e.keyCode == 39) // 39 este codul cheie pentru săgeata dreapta right_txt.text = "Da";  dacă (e.keyCode == 40) // 40 este codul cheie pentru săgeata în jos down_txt.text = "Da";  dacă (e.keyCode == 32) // 32 este codul cheie pentru spațiul de spațiu space_txt.text = "Da";  dacă (e.ctrlKey == true) ctrl_txt.text = "Da";  dacă (e.shiftKey == true) shift_txt.text = "Da";  onKeyRelease (e: KeyboardEvent): void if (e.keyCode == 37) // 37 este codul cheie pentru săgeata stânga left_txt.text = "Nu";  dacă (e.keyCode == 38) // 38 este codul cheie pentru săgeata în sus up_txt.text = "Nu";  dacă (e.keyCode == 39) // 39 este codul cheie pentru săgeata dreapta right_txt.text = "Nu";  dacă (e.keyCode == 40) // 40 este codul cheie pentru săgeata în jos down_txt.text = "Nu";  dacă (e.keyCode == 32) // 32 este codul cheie pentru spațiul spațial space_txt.text = "Nu";  dacă (e.ctrlKey == false) ctrl_txt.text = "Nu";  dacă (e.shiftKey == false) shift_txt.text = "Nu"; 

Declarați funcțiile din interiorul constructorului înseamnă că vor fi colectate gunoi în cazul în care ascultătorii evenimentului vor fi eliminați. Dacă preferați să nu se întâmple acest lucru, puteți să-i declarați ca metodă:

 pachet import flash.display.MovieClip; import flash.events.KeyboardEvent; clasa publica KeyCodes extinde MovieClip functie publica KeyCodes () stage.addEventListener (KeyboardEvent.KEY_DOWN, onKeyPress); // Adăugați un ascultător al evenimentului pe scena care ascultă pentru o cheie care este apăsată stage.addEventListener (KeyboardEvent.KEY_UP, onKeyRelease); // adăugați un ascultător al evenimentului la scena care ascultă pentru eliberarea unei chei funcția publică onKeyPress (e: KeyboardEvent): void if (e.keyCode == 37) // 37 este codul cheie pentru săgeata stânga left_txt.text = "Da";  dacă (e.keyCode == 38) // 38 este codul cheie pentru săgeata sus up_txt.text = "Da";  dacă (e.keyCode == 39) // 39 este codul cheie pentru săgeata dreapta right_txt.text = "Da";  dacă (e.keyCode == 40) // 40 este codul cheie pentru săgeata în jos down_txt.text = "Da";  dacă (e.keyCode == 32) // 32 este codul cheie pentru spațiul de spațiu space_txt.text = "Da";  dacă (e.ctrlKey == true) ctrl_txt.text = "Da";  dacă (e.shiftKey == true) shift_txt.text = "Da";  funcția publică onKeyRelease (e: KeyboardEvent): void if (e.keyCode == 37) // 37 este codul cheie pentru săgeata stânga left_txt.text = "Nu";  dacă (e.keyCode == 38) // 38 este codul cheie pentru săgeata în sus up_txt.text = "Nu";  dacă (e.keyCode == 39) // 39 este codul cheie pentru săgeata dreapta right_txt.text = "Nu";  dacă (e.keyCode == 40) // 40 este codul cheie pentru săgeata în jos down_txt.text = "Nu";  dacă (e.keyCode == 32) // 32 este codul cheie pentru spațiul spațial space_txt.text = "Nu";  dacă (e.ctrlKey == false) ctrl_txt.text = "Nu";  dacă (e.shiftKey == false) shift_txt.text = "Nu"; 

Concluzie

Testați-vă filmul și toate ar trebui să fie bine! Dacă aveți comentarii sau probleme, postați-le doar în secțiunea de comentarii și eu (sau altcineva) vă răspundeți la întrebarea dvs..

Vă mulțumim pentru lectură și sper că v-ați ajutat să aflați mai multe despre apăsările cheie din Flash.

Cod