Quick Tips: Bruk AS3 Keycodes

Quick Tips: Bruk AS3 keycodes
to
Del
3
Del

Dette Cyber ​​mandag Envato Tuts + Kursene vil bli redusert til bare $ 3. Ikke gå glipp av.

Lær hvordan du bruker nøkkelkoder i Actionscript 3.0 til å gjenkjenne når brukeren trykker en bestemt nøkkel.




Endelig resultat Forhåndsvisning

La oss ta en titt på det endelige resultatet vi skal jobbe mot:

Test svarene ved å trykke på tastene på tastaturet ..



Trinn 1: Legg til Tekstbokser

Åpne en ny Flash-dokument. Legg statiske tekstbokser til venstre som har navnene på tastene du vil oppdage og dynamiske tekstbokser med teksten "No" inni dem

Gi dynamiske tekstbokser eksempel navn med følgende format:. "Keyname_txt ". Mine er ctrl_txt, shift_txt, left_txt, up_txt, right_txt, down_txt og space_text henholdsvis



Trinn 2:.. Opprett Base Kode

Gå Fil> Ny og velg Action File Anmeldelser

Nå satt opp basisdokumentet klassen slik: (Hvis du ønsker å lære om dokument klasser lese Michael Quick Tip)
pakke {import flash.display.MovieClip; public class keycodes strekker MovieClip {public funksjons keycodes () {}}}



Trinn 3: Opprett Lytter Hendelser

For å oppdage når brukeren trykker en tast med AS3 vi trenger å legge hendelsen lyttere som lytter for en bruker å trykke og slippe tastene. Vi kan gjøre dette ved å legge til følgende kode i våre keycodes () konstruktør funksjon:
offentlig funksjon keycodes () {stage.addEventListener (KeyboardEvent.KEY_DOWN, onkeypress); //Legg til en hendelse lytteren til scenen som lytter etter en nøkkel som trykkes stage.addEventListener (KeyboardEvent.KEY_UP, onKeyRelease); //Legg til en hendelse lytteren til scenen som lytter etter en nøkkel blir utgitt}

Før vi går videre må vi legge en linje med kode for å importere KeyboardEvent. Legg denne linjen med kode nedenfor der vi importere MovieClip klasse på linje 3:
pakke {import flash.display.MovieClip; import flash.events.KeyboardEvent;



Trinn 4: Enkel Test

Under våre lyttere legge to funksjoner som ringes opp når brukeren enten presser eller utgivelser en nøkkel:
offentlig funksjon keycodes () {stage.addEventListener (KeyboardEvent.KEY_DOWN, onkeypress); //Legg til en hendelse lytteren til scenen som lytter etter en nøkkel som trykkes stage.addEventListener (KeyboardEvent.KEY_UP, onKeyRelease); //Legg til en hendelse lytteren til scenen som lytter etter en nøkkel blir utgitt funksjon onkeypress (e: KeyboardEvent): void {} funksjon onKeyRelease (e: KeyboardEvent): void {}}

Nå kan vi legge til et spor () til hver funksjon slik at når du trykker på en tast vil det spore "-tasten trykkes" inn i utgangspanelet og "-tasten slippes" når nøkkelen slippes. For å gjøre dette kan vi legge til følgende kode inn i våre funksjoner:
offentlig funksjon keycodes () {stage.addEventListener (KeyboardEvent.KEY_DOWN, onkeypress); //Legg til en hendelse lytteren til scenen som lytter etter en nøkkel som trykkes stage.addEventListener (KeyboardEvent.KEY_UP, onKeyRelease); //Legg til en hendelse lytteren til scenen som lytter etter en nøkkel blir utgitt funksjon onkeypress (e: KeyboardEvent): void {trace ("tasten nede"); } Funksjon onKeyRelease (e: KeyboardEvent): void {trace ("-tasten slippes"); }}

Test filmen (Ctrl + Enter). Når du trykker på en tast det bør spore "-tasten trykkes" inn din utgang panel og "-tasten slippes" når du slipper den



Trinn 5:. Detect keycodes

Du kan oppdage hvilken tast er trykket ved å spore nøkkelkode. Endre spor fra trace ("tasten inne") for å spore (e.keyCode) og ta ut nøkkelen slippes spor. Koden skal nå se slik ut:
offentlig funksjon keycodes () {stage.addEventListener (KeyboardEvent.KEY_DOWN, onkeypress); //Legg til en hendelse lytteren til scenen som lytter etter en nøkkel som trykkes stage.addEventListener (KeyboardEvent.KEY_UP, onKeyRelease); //Legg til en hendelse lytteren til scenen som lytter etter en nøkkel blir utgitt funksjon onkeypress (e: KeyboardEvent): void {trace (e.keyCode); } Funksjon onKeyRelease (e: KeyboardEvent): void {}}

Nå når du trykker en tast det vil spore ut koden som er knyttet til den spesifikke nøkkelen. Hvis jeg trykker på venstre pil vil det spore 37 i utgangspanelet og mellomromstasten vil spore 32.

Med denne informasjonen bokstavelig talt ved fingertuppene kan du utføre ulike arrangementer for ulike nøkler, alle med én hendelse lytteren. Prøv å legge koden til din funksjon og se hva som skjer når du trykker på mellomromstasten:
funksjon onkeypress (e: KeyboardEvent): void {trace (e.keyCode); if (e.keyCode == 32) {//Hvis keycode er lik 32 (mellomromstasten) trace ("mellomromstasten trykkes"); }}

Hvis du nå trykker på mellomromstasten det vil ikke bare spore opp 32, det vil spore "mellomromstasten trykket". Du kan bruke dette til å forholde seg til mange forskjellige nøkler separat i én funksjon



Trinn 6:. Endre tekst på Key Trykk

Gå videre og slette spor inne i "hvis" uttalelse. Erstatte det med dette:
funksjonen onkeypress (e: KeyboardEvent): void {trace (e.keyCode); if (e.keyCode == 32) {//Hvis keycode er lik 32 (mellomromstasten) space_txt.text = "Ja"; //Endre mellomromstasten tekstboksen til "Ja"}}

Nå når du trykker på mellomromstasten, bør du se på mellomromstasten etiketten endring fra "Nei" til "Ja".

Gjør dette for alle tastene unntatt kontroll og shift, som de har spesielle måter å bli oppdaget
funksjon onkeypress. (e: KeyboardEvent): void {if (e.keyCode == 37) {//37 er nøkkelkode for pil venstre left_txt.text = "Ja"; } If (e.keyCode == 38) {//38 er nøkkelkode for pil opp up_txt.text = "Ja"; } If (e.keyCode == 39) {//39 er nøkkelkode for høyrepil right_txt.text = "Ja"; } If (e.keyCode == 40) {//40 er nøkkelkode for pil ned down_txt.text = "Ja"; } If (e.keyCode == 32) {//32 er nøkkelkode for mellomromstasten space_txt.text = "Ja"; }}



Trinn 7: Detect Kontroll og Shift

Hvordan kan vi finne ut om kontroll eller SHIFT knapper trykkes? Hver og en har en enkel innebygd variabel som endres automatisk når tastene trykkes. Du kan oppdage dem ved hjelp av følgende kode. Sett denne koden under den andre "hvis" uttalelser i onkeypress ()
if (e.ctrlKey == true) {ctrl_txt.text = "Ja";}. If (e.shiftKey == true) {shift_txt.text = "Ja";}

Merk: det er også altKey, som vil finne ut om alt-tasten trykkes. Dette vil bare fungere i Adobe AIR-applikasjoner som å trykke alt mens fokusert i en Flash-fil vil nesten alltid ta fokus fra SWF og derfor ikke fungere



Trinn 8:. Skriv Release Function
< p> For å opprette utgivelsen funksjon alt vi trenger å gjøre er å kopiere koden inne i onkeypress () funksjon og bare endre noen ting.

Vi trenger å endre all teksten til å si "Nei" i stedet for " ja "og sjekk om ctrlKey og Skift-tast er falske ikke sant. Dette er hva den endelige koden skal se ut:
pakke {import flash.display.MovieClip; import flash.events.KeyboardEvent; public class keycodes strekker MovieClip {offentlig funksjon keycodes () {stage.addEventListener (KeyboardEvent.KEY_DOWN, onkeypress); //Legg til en hendelse lytteren til scenen som lytter etter en nøkkel som trykkes stage.addEventListener (KeyboardEvent.KEY_UP, onKeyRelease); //Legg til en hendelse lytteren til scenen som lytter etter en nøkkel blir utgitt funksjon onkeypress (e: KeyboardEvent): void {if (e.keyCode == 37) {//37 er nøkkelkode for pil venstre left_txt.text = "Ja "; } If (e.keyCode == 38) {//38 er nøkkelkode for pil opp up_txt.text = "Ja"; } If (e.keyCode == 39) {//39 er nøkkelkode for høyrepil right_txt.text = "Ja"; } If (e.keyCode == 40) {//40 er nøkkelkode for pil ned down_txt.text = "Ja"; } If (e.keyCode == 32) {//32 er nøkkelkode for mellomromstasten space_txt.text = "Ja"; } If (e.ctrlKey == true) {ctrl_txt.text = "Ja"; } If (e.shiftKey == true) {shift_txt.text = "Ja"; }} Funksjon onKeyRelease (e: KeyboardEvent): void {if (e.keyCode == 37) {//37 er nøkkelkode for pil venstre left_txt.text = "Nei"; } If (e.keyCode == 38) {//38 er nøkkelkode for pil opp up_txt.text = "Nei"; } If (e.keyCode == 39) {//39 er nøkkelkode for høyrepil right_txt.text = "Nei"; } If (e.keyCode == 40) {//40 er nøkkelkode for pil ned down_txt.text = "Nei"; } If (e.keyCode == 32) {//32 er nøkkelkode for mellomromstasten space_txt.text = "Nei"; } If (e.ctrlKey == false) {ctrl_txt.text = "Nei"; } If (e.shiftKey == false) {shift_txt.text = "Nei"; }}}}}

Erklærer funksjonene inne i konstruktøren betyr at de vil være søppel samles om hendelses lyttere er fjernet. Hvis du heller ikke dette skje, kan du erklære dem som metoder, som så:
pakke {import flash.display.MovieClip; import flash.events.KeyboardEvent; public class keycodes strekker MovieClip {offentlig funksjon keycodes () {stage.addEventListener (KeyboardEvent.KEY_DOWN, onkeypress); //Legg til en hendelse lytteren til scenen som lytter etter en nøkkel som trykkes stage.addEventListener (KeyboardEvent.KEY_UP, onKeyRelease); //Legg til en hendelse lytteren til scenen som lytter etter en nøkkel blir utgitt} offentlig funksjon onkeypress (e: KeyboardEvent): void {if (e.keyCode == 37) {//37 er nøkkelkode for pil venstre left_txt.text = "Ja"; } If (e.keyCode == 38) {//38 er nøkkelkode for pil opp up_txt.text = "Ja"; } If (e.keyCode == 39) {//39 er nøkkelkode for høyrepil right_txt.text = "Ja"; } If (e.keyCode == 40) {//40 er nøkkelkode for pil ned down_txt.text = "Ja"; } If (e.keyCode == 32) {//32 er nøkkelkode for mellomromstasten space_txt.text = "Ja"; } If (e.ctrlKey == true) {ctrl_txt.text = "Ja"; } If (e.shiftKey == true) {shift_txt.text = "Ja"; }} Offentlig funksjon onKeyRelease (e: KeyboardEvent): void {if (e.keyCode == 37) {//37 er nøkkelkode for pil venstre left_txt.text = "Nei"; } If (e.keyCode == 38) {//38 er nøkkelkode for pil opp up_txt.text = "Nei"; } If (e.keyCode == 39) {//39 er nøkkelkode for høyrepil right_txt.text = "Nei"; } If (e.keyCode == 40) {//40 er nøkkelkode for pil ned down_txt.text = "Nei"; } If (e.keyCode == 32) {//32 er nøkkelkode for mellomromstasten space_txt.text = "Nei"; } If (e.ctrlKey == false) {ctrl_txt.text = "Nei"; } If (e.shiftKey == false) {shift_txt.text = "Nei"; }}}}



Konklusjon

Test filmen og alle bør være godt! Hvis du har kommentarer eller spørsmål bare legge dem i kommentarfeltet og jeg (eller noen andre) vil svare på spørsmålet ditt.

Takk for lesing og jeg håper det hjalp deg å lære mer om tastetrykkene i Flash.



Previous:
Next Page: