Å ta en nærmere titt på Actionscript 3.0 Hendelses Framework

Taking en nærmere titt på Actionscript 3.0 Hendelseswork
Del
Del
Del
Del

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

I denne opplæringen vil jeg forklare om Actionscript 3.0 Hendelseswork. Etter denne opplæringen bør du ha en klar forståelse av hvordan hendelser, event dispatchers og event lyttere fungere.



Hva har du tenkt å lære?

Fordi AS3 hendelsen rammeverket er stort, vil vi se på alle de forskjellige tingene som utgjør hendelsen rammeverket. Vi skal lære om følgende:

Arrangementer

Hendelses dispatchers

Hendelses lyttere

Hendelses flyt

Ofte brukt hendelser

Og noen tips & triks

Trinn 1: The Event Work forenklet

Jeg tror du ville ha en tøff tid å forstå hendelsen rammen hvis vi hopper rett inn i teknisk sjargong, så jeg skal først beskrive en virkelig situasjon. Hele situasjonen er en metafor for hendelsen rammeverk. Ok, så here we go:

Jeg er en ivrig leser av Computer Arts
og jeg venter hver eneste dag for den nye utgaven. Når jeg får spørsmålet, skal jeg begynne å lese den

Trinn 2:. Analysere hendelsesWork metafor

Ok, vi har flere ting skjer:

I motta den nye utgaven. Dette mottak av en sak er en Hendelses
.

  • Denne hendelsen skjer et sted, skjer det til meg, jeg er EventDispatcher
    .
  • Jeg venter på den nye utgaven å ankomme. Jeg er en gjenstand og jeg venter på denne hendelsen til å skje. Jeg er en gjenstand som er lytter
    for hendelsen skal skje. Jeg er et objekt med en hendelse lytteren
    lagt til meg. Denne hendelsen lytteren er å lytte til en bestemt hendelse (nemlig mottatt en ny utgave).
  • Når jeg får spørsmålet, skal jeg begynne å lese den. Når hendelsen har skjedd, jeg gjør noe, jeg utføre en funksjon. Jeg håndtering av hendelsen. Funksjonen som jeg gjør kalles handler Hotell og /eller lytteren funksjon

    Trinn 3:. Teknisk sjargong - Arrangements
    < p> Jeg har nevnt flere ting:

    Hendelses

    EventDispatcher

    Hendelses lytteren

    behandleren /lytteren funksjon

    En hendelse er et objekt som beskriver en hendelse, i Trinn 1
    arrangementet er ankomsten av en ny sak.

    De fleste ganger vil du se en hendelse som er skrevet i en struktur som ligner på dette:
    MouseEvent.CLICK

    Denne kodebit består av to ting:

    MouseEvent
    dette er den klassen som inneholder en eller flere hendelser. Dette er alltid skrevet i Camelcase.

  • KLIKK
    dette er hendelsestypen. Dette er alltid skrevet med store bokstaver.

    Arrangementet typen er faktisk en statisk konstant streng. Det høres kanskje rart ut, men en hendelse er ikke noe annet enn en streng. Prøv å kjøre dette tekstutdraget
    spore (MouseEvent.MOUSE_MOVE);.

    Du får som output mousemove
    . Vi har nettopp spores konstant MOUSE_MOVE, som er inne i MouseEvent klassen. En hendelse er en streng! Men denne strengen representerer forekomsten av (i dette eksempelet) bevegelse av musen

    Trinn 4:. Teknisk sjargong - EventDispatcher

    En hendelse skjer alltid et eller annet sted. Hvor hendelsen skjer er der det blir avfyrt (sendes). Røttene til utsending hendelser er i klassen EventDispatcher. Innser at der hendelsen er avsendt er der det skjer. Så hvis filmklipp A
    sender en hendelse, da en hendelse lytteren (event lyttere vil bli forklart i trinn 5) lagt til filmklipp B
    ikke ville motta denne hendelsen. Anmeldelser

    For å gjøre ting enkelt, har alle visningsobjekter den innebygde funksjonen dispatchEvent (hendelse: Hendelse)
    , akkurat som mange andre klasser
    Var myMC:. MovieClip = new MovieClip (); myMC .dispatchEvent (ny hendelse (MouseEvent.CLICK));

    Men de fleste gangene du ikke vil ekspedere hendelser manuelt, de fleste ganger hendelser sendes automatisk. For eksempel, hvis jeg klikker filmklipp A, det vil automatisk sende hendelsen MouseEvent.CLICK

    Trinn 5:. Teknisk sjargong - Arrangementslist

    Når en bestemt hendelse skjer, vi, som Flash-utviklere, ønsker å gjøre noe for å svare på denne hendelsen. Hendelsen lyttere er hva du trenger. Hendelsen lyttere ikke har sin egen klasse, nei de er litt annerledes. Hendelsen lyttere er lagt til et objekt. Hendelsen lyttere er objekter som "lytter" til en bestemt hendelse. Når denne hendelsen skjer, deretter funksjon vil bli kalt, en handler (funksjon)
    .

    Se på bildet nedenfor, som viser syntaksen bak funksjon addEventListener ()
    , som brukes til å legge til en hendelse lytteren:

    Egentlig de er ikke alle parametere i addEventListener metoden aksepterer, er det fortsatt tre som jeg ikke har nevnt. Du vil nesten aldri bruker dem, spesielt når du nettopp har begynt å bruke hendelsen lyttere. La oss igjen se på strukturen i addEventListener metoden
    addEventListener. (Type: String, lytteren: Funksjon, useCapture: Boolean = false, prioritet: int = 0, useWeakReference: Boolean = false): void

    Så la oss diskutere de siste 3 parametre:

    useCapture Bilde: Når denne parameteren er satt til sann, vil vi lytte til hendelsen i registreringsfasen. Som standard er dette parameter er satt til false, og dermed vi lytte til hendelsen i målet og boble fase. Vi vil diskutere hendelsen flyt i Trinn 10

    prioritet Bilde:. Selv om det kan virke som om alle hendelses lyttere arbeide samtidig, de faktisk ikke. Noen ganger kan de komme i konflikt med hverandre. Dette er for å sørge for at en bestemt hendelse lytteren har en høyere prioritet enn en annen hendelse lytteren

    useWeakReference Bilde:. Når denne paramater er satt til true vil det skape en svak kobling mellom objektet og event lytteren. Vel, hva betyr dette? Normalt objekter komme søppel samles hvis det ikke er noen referanser til dem. Når objektet er fjernet der en hendelse lytteren er lagt, vil det fortsatt eksistere hvis det blir referert et annet sted. Dette skjer med sterke minne referanser
    . Med svake minne referanser
    tilfelle lytteren blir fjernet når objektet det er lagt til blir fjernet. Jeg personlig setter denne parameteren til true (så jeg bruker svake minne referanser).

    Ta en hendelse lytteren er like enkelt som å legge en.
    //Dette legger en hendelse lytteren til stagestage .addEventListener (MouseEvent.CLICK, clickHandler); //dette fjerner hendelsen lytteren lagt til stagestage.removeEventListener (MouseEvent.CLICK, clickHandler);
    Trinn 6: Handler /List Funksjon

    Når arrangementet oppstår som en hendelse lytteren lytter etter, kaller det en funksjon. Denne funksjonen kalles handler
    eller lytteren funksjon
    . Se på bildet nedenfor, som viser syntaksen til behandleren:

    Legg merke til argumentet i behandleren, er dette argumentet obligatorisk. Lytteren funksjonen har bare ett argument, og er ikke lov å ha mer. Denne hendelsen inneholder informasjon om hendelsen, vi skal snakke om dette i trinn 9

    Trinn 7:. Legge til en hendelse lytteren og Handler

    Nå ønsker vi myMC til svare på utsendt hendelsen, så vil vi legge til en hendelse og etterpå behandleren funksjonen. Vår koden vil se ut slik:
    //skaper vår myMC film clipvar myMC: MovieClip = new MovieClip (); //la myMC sende hendelsen MouseEvent.CLICKmyMC.dispatchEvent (ny hendelse (MouseEvent.CLICK)); //legge til en hendelse lytteren til myMC, som lytter til hendelsen MouseEvent.CLICK, og vil ringe clickHandlermyMC.addEventListener (MouseEvent.CLICK, clickHandler); //definere handler functionfunction clickHandler (hendelse: hendelse) {trace ("Jeg hørte hendelsen MouseEvent.CLICK ");}

    Etterpå teste filmen (Windows: Ctrl + Enter, Mac: Cmd + Enter)

    Har du fått noen utgang.? Nei? Vel, heller ikke I. Vi skal se på hva som går galt i neste trinn

    Trinn 8:. Kode Bestill

    Så hva som går galt? Vel, det kan ikke være en syntaksfeil, minst Jeg
    ikke får noe. Nei, dette er teknisk sett ikke engang en feil. Se på koden igjen, men denne gangen huske at koden vil bli henrettet linje for linje:
    //skaper vår myMC film clipvar myMC: MovieClip = new MovieClip (); //la myMC sende hendelsen MouseEvent.CLICKmyMC. dispatchEvent (ny hendelse (MouseEvent.CLICK)); //legge til en hendelse lytteren til myMC, som lytter til hendelsen MouseEvent.CLICK, og vil ringe clickHandlermyMC.addEventListener (MouseEvent.CLICK, clickHandler); //definere handler functionfunction clickHandler (hendelse: hendelse) {trace ("Jeg hørte hendelsen MouseEvent.CLICK");}

    Jeg håper du har innsett hva som er gått galt: arrangementet blir sendt før en hendelse lytteren er lagt til myMC. Så når arrangementet lytteren er lagt, det er for sent, hendelsen har skjedd. Heldigvis er det lett å løse, bare endre rekkefølgen, og først legge til hendelsen lytteren, så etterpå sende hendelsen:
    //skaper vår myMC film clipvar myMC: MovieClip = new MovieClip (); //legge til en hendelse lytteren til myMC , som lytter til hendelsen MouseEvent.CLICK, og vil ringe clickHandlermyMC.addEventListener (MouseEvent.CLICK, clickHandler); //la myMC sende hendelsen MouseEvent.CLICKmyMC.dispatchEvent (ny hendelse (MouseEvent.CLICK)); //definere handler functionfunction clickHandler (hendelse: hendelse) {trace ("Jeg hørte hendelsen MouseEvent.CLICK");}

    Så hvorfor gjorde vi alt dette? Vel, vil du sannsynligvis oppleve dette problemet, og det kan ta en stund å innse hva som skjer. Det er bedre å vise deg problemet og lære deg hvordan å løse det

    Trinn 9: The Event Argument

    Hver handler funksjon har ett argument;. hendelsen argument. Dette argumentet inneholder data om hendelsen og hendelses sentralen. Parameteren inneholder egenskaper som vi ønsker å lese. Her er en liste over noen av de mest brukte dem:

    target Bilde:. Dette returnerer målobjektet og dermed arrangementet sentralen om hendelsen

    < b> currentTarget Bilde:. Dette returnerer tiden målrettet objekt i tilfelle flyt, vil vi snakke om hendelsen flyt i Trinn 10

    skriv Bilde: Dette vil returnere arrangementet strengen. Verdien blir alltid skrevet i Camelcase. Så MOUSE_DOWN har verdien mousedown.

    Med dette kan vi bruke den samme behandleren for ulike typer arrangementer. Hvordan? Vel, vi skal diskutere dette i neste trinn

    Trinn 10:. Flere Events, One List Funksjon

    Ok, først la oss se på dette kodebit:
    stage.addEventListener ( MouseEvent.MOUSE_DOWN, downHandler); stage.addEventListener (MouseEvent.MOUSE_UP, upHandler), funksjon downHandler (event: MouseEvent) {trace ("Down");} funksjon upHandler (event: MouseEvent) {trace ("Up");}

    Vi bruker to hendelsene, nemlig MouseEvent.MOUSE_DOWN Hotell og MouseEvent.MOUSE_UP
    . Den første hendelsen er den hendelsen når musen trykker på museknappen og holder den ned
    . Når personen utgivelser denne knappen, skjer da hendelsen MouseEvent.MOUSE_UP. Museknappen går opp
    etter slippe den.

    Nå kan vi bruke i stedet for to handlere (nemlig downHandler Hotell og upHandler
    ) bare ett handler . Fjern koden vi har skrevet og skriver følgende:
    stage.addEventListener (MouseEvent.MOUSE_DOWN, handler); stage.addEventListener (MouseEvent.MOUSE_UP, handler), funksjon behandleren (event: MouseEvent) {trace ("Noe har skjedd ... ");}

    Ok, vi har satt opp vår handler og det fungerer, men vi ønsker at våre handler om å gjøre noe konkret, avhengig av hvilken hendelse sendes til behandleren. Heldigvis, kan vi bruke event.type
    . La oss bruke det
    stage.addEventListener (MouseEvent.MOUSE_DOWN, handler); stage.addEventListener (MouseEvent.MOUSE_UP, handler), funksjon behandleren (event: MouseEvent)! {If (event.type == "mousedown") {trace ("Ned"); } else {trace ("Up"); }}
    Trinn 11: Hendelses Flow

    La oss nå si at et klikk skjer på en MovieClip, la oss kalle det MCA
    . Arrangementet betyr ikke bare bli sendt på MCA, nei, reiser tilfelle gjennom hele spilleren. Dette reiser kalles hendelsen flyt
    , bare tenk hvordan arrangementet strømmer gjennom spilleren.

    Arrangementet starter på øverste nivå, på scenen
    , etterpå det vil gå gjennom foreldre
    av MCA
    , inntil hendelsen når mfl. Etterpå arrangementet vil "boble" tilbake fra MCA, tilbake til scenen.

    Ok, kult, men hva kan jeg bruke dette til? Fordi vi nå vet at en hendelse reiser gjennom alle foreldrene til sentralen, kan vi bruke bare en
    hendelse lytteren, for å spore hendelser av mer enn ett objekt

    Trinn 12:. Multiple objekter, en hendelse List

    Ok, så la oss lage noen flere filmklipp inni hverandre. Du kan gjøre dette selv, eller bare bruke den trinn 11.fla fil gitt.

    Vi vil opprette 3 filmklipp, og vi vil gi dem forekomstnavn redMC
    , blueMC Hotell og greenMC
    . Etterpå plassere alle disse inne en større MovieClip, heter container
    .

    La oss nå begynne å skrive kode. Jeg har allerede opprettet et lag som heter Handlinger
    , så skrive koden på det laget. Først la oss legge til en hendelse lytteren til container
    , lytte til hendelsen MouseEvent.CLICK
    , med behandleren heter clickHandler
    .
    Container.addEventListener (MouseEvent. KLIKK, clickHandler), funksjon clickHandler (event: MouseEvent) {//funksjon kroppen}

    Vi ønsker å vite hvilken knapp som blir klikket, så hvorfor vi legge til en hendelse lytteren til container? Vel, se på bildet under:

    Som du ser, arrangementet blir sendt på redMC, men det vil boble
    tilbake til beholderen. Da arrangementet lytteren lagt til container vil høre arrangementet og vil ringe lytteren funksjon clickHandler. Det samme skjer med blueMC og greenMC.

    Nå skal vi bruke event.target, fordi event.target er hendelsen sentralen, og arrangementet sentralen er redMC. Så hvordan vi kan bruke event.target? Vi kan se etter event.target.name, som returnerer forekomsten navn som en streng. Så vi kan bare bruke normal hvis
    uttalelser:
    container.addEventListener (MouseEvent.CLICK, clickHandler), funksjon clickHandler (event: MouseEvent) {if (event.target.name == "redMC") {spore ("Red"); } If (event.target.name == "blueMC") {trace ("Blue"); } If (event.target.name == "greenMC") {trace ("Green"); }}
    Trinn 13: Ofte brukt Hendelser

    Nå har du en god forståelse av hendelsen rammeverk, men for å oppnå noe, er det viktigste å vite hvilke arrangement som skal brukes. Et flott sted å sjekke hvilke hendelser eksisterer, er Actionscript 3.0 Språk og komponenter Reference. Bare klikk en hendelse som inneholder klasse, som MouseEvent, og se på hva hver hendelse er

    Trinn 14:. MouseEvent.MOUSE_MOVE

    Denne hendelsen oppstår når brukeren beveger musen. Hvis du legger til en hendelse lytteren å lytte til denne hendelsen, igjen, la oss si, en MovieClip heter myMC, så du vil vite når musen beveger seg over myMC
    myMC.addEventListener (MouseEvent.MOUSE_MOVE, mouseMoveHandler);. Funksjon mouseMoveHandler (event: MouseEvent) {trace ("Musen beveger seg i over myMC");}
    Trinn 15: MouseEvent.MOUSE_OVER

    oppstår Denne hendelsen når brukeren beveger seg over (svever). Denne hendelsen oppstår bare når brukeren flytter markøren fra et annet sted over objektet. Bevege musen over objektet er da ikke lenger tilfelle MouseEvent.MOUSE_OVER, men hendelsen MouseEvent.MOUSE_MOVE
    myMC.addEventListener (MouseEvent.MOUSE_OVER, overHandler), funksjon overHandler (event: MouseEvent). {Trace ("Du bare flyttet musen på myMC ");}
    Trinn 16: MouseEvent.MOUSE_OUT

    Denne hendelsen er nettopp det motsatte av MouseEvent.MOUSE_OVER. . Dette er når brukerens markøren flyttes bort fra objektet, eller som de (gutta som skapte AS3) kaller det, av objektet
    myMC.addEventListener (MouseEvent.MOUSE_OUT, outHandler), funksjon outHandler (event: MouseEvent) {trace ("Du har nettopp flyttet musa ut myMC");}
    Trinn 17:. MouseEvent.MOUSE_DOWN

    Denne hendelsen oppstår når brukeren trykker på muse ned, mens det blir holdt nede
    myMC.addEventListener (MouseEvent.MOUSE_DOWN, downHandler), funksjon downHandler (event: MouseEvent) {trace ("Den primære museknappen er trykket ned på myMC");}
    Trinn 18: MouseEvent.MOUSE_UP

    Denne hendelsen er nettopp det motsatte av MouseEvent.MOUSE_DOWN. . Når brukeren slipper museknappen, så hendelsen MouseEvent.MOUSE_UP oppstår
    myMC.addEventListener (MouseEvent.MOUSE_UP, upHandler), funksjon upHandler (event: MouseEvent) {trace ("Den primære museknapp har blitt utgitt, mens det var svever over myMC ");}
    Trinn 19: MouseEvent.CLICK

    Vel navnet gjør allerede det ganske klart når dette skjer. Denne hendelsen oppstår når brukeren klikker (med venstre museknapp)
    myMC.addEventListener (MouseEvent.CLICK, clickHandler), funksjon clickHandler (event: MouseEvent). {Trace ("Du bare klikket myMC");}
    Trinn 20: MouseEvent.DOUBLE_CLICK

    Vel denne hendelsen oppstår når brukeren klikker to ganger (med venstre museknapp). Gjør oppmerksom på at når MouseEvent.DOUBLE_CLICK skjer, at MouseEvent.CLICK skjer for andre gang
    myMC.addEventListener (MouseEvent.DOUBLE_CLICK, doubleClickHandler), funksjon doubleClickHandler (event: MouseEvent). {Trace ("Du bare dobbeltklikket myMC ");}

    Hvis du nå teste filmen og dobbeltklikk, ingenting vil skje. Hvorfor? Vel som standard filmklipp (og nesten alle skjerm objekter) har den egenskapen doubleClickEnabled satt til false. Så MouseEvent.DOUBLE_CLICK vil ikke bli sendt ut. Bare sette den til sann, og alt vil fungere fint
    myMC.addEventListener (MouseEvent.DOUBLE_CLICK, doubleClickHandler), funksjon doubleClickHandler (event: MouseEvent). {Trace ("Du bare dobbeltklikket myMC");} myMC.doubleClickEnabled = true;
    Trinn 21: Event.ENTER_FRAME

    Denne hendelsen oppstår hver gang objektet går inn i en ny ramme (ja, det høres litt rart). Vel i utgangspunktet skjer dette arrangementet på frekvensen av bildefrekvensen. Det betyr at hvis filmen har en bildefrekvens på 30 bilder i sekundet, da arrangementet vil bli kalt 30 ganger i sekundet. Hva vil du bruke denne hendelsen for? Du kan bruke denne hendelsen til å få ting til å skje gradvis. For eksempel kan du øke objektets x koordinere med 5, på frekvensen av bildefrekvensen
    myMC.addEventListener (Event.ENTER_FRAME, enterFrameHandler), funksjon enterFrameHandler (hendelse: Hendelse). {MyMC.x + = 5;}
    Trinn 22: Event.COMPLETE

    oppstår Denne hendelsen når objektet er ferdig hva det gjorde. De fleste ganger du vil bruke det til ting som trenger å laste noe, eller for ting som spiller en form for media. En URLLoader laster en URLRequest, etter URLLoader fullført lasting, så får vi laste disse dataene til en annen loader og etterpå legge lasteren til scenen
    Var myURLRequest: URLRequest = new URLRequest ("http: //farm3.. static.flickr.com/2382/1616598266_bafebf0086_o.jpg");var myURLLoader: URLLoader = new URLLoader (myURLRequest); myURLLoader.dataFormat = URLLoaderDataFormat.BINARY; myURLLoader.addEventListener (Event.COMPLETE, completeHandler), funksjon completeHandler (event: Hendelses ) {var loader: Loader = new Loader (); loader.loadBytes (myURLLoader.data); addChild (loader);}
    Trinn 23: Event.RESIZE

    Denne hendelsen oppstår når flash player eller siden der blitsen inne er endret. Du kan bruke denne hendelsen til å reposisjonere gjenstander etter resizing har skjedd
    stage.addEventListener (Event.RESIZE, resizeHandler), funksjon resizeHandler (hendelse: Hendelse). {Trace ("Dimensjonene på scenen er" + stage.stageWidth + "x" + stage.stageHeight);}
    Trinn 24: KeyboardEvent.KEY_DOWN

    Denne hendelsen oppstår når alle
    tast trykkes på tasten bord
    stage.addEventListener. (KeyboardEvent.KEY_DOWN, keyDownHandler), funksjon keyDownHandler (event: KeyboardEvent) {trace ("Du bare trykket på en tast");}
    Trinn 25: KeyboardEvent.KEY_UP

    Denne hendelsen er nettopp det motsatte av KeyboardEvent.KEY_DOWN, oppstår denne hendelsen når alle
    tasten slippes (nøkkelen går opp)
    stage.addEventListener (KeyboardEvent.KEY_UP, keyUpHandler), funksjon keyUpHandler (event: KeyboardEvent). {trace ( "Du bare gitt ut en nøkkel");}
    Trinn 26: Bruke den innebygde nøkkel booleans

    Selvfølgelig, det er ganske nytteløst å svare på vilkårlig tast plakater (med unntak av en skjerm saver), så vi trenger å hente informasjon om hvilken tast er trykket. Heldigvis er noen av nøklene bygget inn i klassen KeyboardEvent, disse er booleans og er satt til true når det blir presset ned. Dette bygget i booleans er:

    KeyboardEvent.altKey er dette satt til true når alt tasten trykkes ned

    KeyboardEvent.commandKey, denne er satt til true når kommandoen. tast trykkes ned (AIR only).

    KeyboardEvent.controlKey, denne er satt til true når kontroll (ctrl) tasten trykkes ned (AIR only).

    KeyboardEvent.ctrlKey, dette er satt til true når kontroll (ctrl) tasten trykkes ned på Windows. Men på Mac ctrl-tasten er sant når cmd-tasten trykkes.

  • KeyboardEvent.shiftKey, denne er satt til true når shift-tasten trykkes ned.

    Så nå kan vi bruke dette til å være mer konkret hvilken tast må trykkes før vi gjør noe
    stage.addEventListener (KeyboardEvent.KEY_DOWN, keyDownHandler), funksjon keyDownHandler (event: KeyboardEvent). {if (event.shiftKey) {trace ("Du bare trykket Shift-tasten "); }}
    Trinn 27: Bruke nøkkelkoder

    Du kan lure på, ok, hva med alle de andre tastene? Vel det er noe som heter nøkkelkode
    . Hver tast har et visst antall; en nøkkelkode. Vi kan kontrollere nøkkelkoden på nøkkelen som utløste hendelsen. Dette gjøres med event.keyCode, som returnerer et heltall. Klikk her for en liste over viktige koder. Selv om det er for javascript, nøkkelkodene er de samme
    stage.addEventListener (KeyboardEvent.KEY_DOWN, keyDownHandler), funksjon keyDownHandler (event: KeyboardEvent). {If (event.keyCode == 65) {trace ("Du bare trykket på en tast "); }}

    Nå er det enklere å lagre nøkkelkodene i en variabel (eller hvis du er hardcore, i en klasse) og bare bruke den variabelen, i stedet for nøkkel koden
    Div A:. uint = 65; stage.addEventListener (KeyboardEvent.KEY_DOWN, keyDownHandler), funksjon keyDownHandler (event: KeyboardEvent) {if (event.keyCode == A) {trace ("Du bare trykker på en tast"); }}
    Trinn 28: Bruke tegnkoder

    Med nøkkelkoder du kan få ganske mye gjort, men det noen ganger er ikke det du trenger. For eksempel er den samme tasten brukes for tegnene en Anmeldelser og En
    . Men vi vil fortsatt ønsker å skille mellom de to. Vel, bærer hendelsen tegnkoden for hendelsen sentralen
    stage.addEventListener (KeyboardEvent.KEY_DOWN, keyDownHandler), funksjon keyDownHandler (event: KeyboardEvent). {Trace (event.charCode);}

    Ok, dette fungerer Men trenger da må vi huske disse tegnkoder? Nei. Heldigvis kan vi bruke funksjonen charCodeAt (), som returnerer tegnet koden til en karakter (i en String). charCodeAt () tar som standard det første tegnet ut av strengen. charCodeAt (0) er det første tegnet, charCodeAt (1) den andre, etcetera
    stage.addEventListener (KeyboardEvent.KEY_DOWN, keyDownHandler), funksjon keyDownHandler (event: KeyboardEvent). {if (event.charCode == String (" a ".) charCodeAt ()) {trace (" Du bare trykket på små bokstaver en nøkkel "); }}
    Trinn 29: Fokus

    Nå kan du prøve å skrive følgende:
    myMC.addEventListener (KeyboardEvent.KEY_DOWN, keyDownHandler), funksjon keyDownHandler (event: KeyboardEvent) {trace ("Du bare trykket en tasten, mens du blir fokusert på myMC ");}

    Prøv å teste dette, vil det ikke fungere! Hvorfor? Hvis myMC er et filmklipp, vil den ikke akseptere keyboard input, og dermed tastatur hendelser vil ikke bli sendt ut på filmklipp. Hvis du ønsker myMC å svare, legge til hendelsen lytteren til scenen og deretter gjøre myMC gjøre noe. Prøv å endre myMC fra et filmklipp til et dynamisk tekstfelt, så vil det fungere.

    Hva om to dynamiske tekstfelt? Hvis brukeren taster, gjør både tekstfelt sende en hendelse? Nei, bare den ene du skriver i. Dette kalles fokusere
    . Tastaturet hendelser sendes av objektet som har fokus. Scenen er den eneste gjenstanden som fortsatt har fokus, mens et annet objekt også har fokus

    Trinn 30:. TimerEvent.TIMER

    Denne hendelsen er spesielt bygget for tidtakere. Det blir sendt på et tidsur, som bare nådde forsinkelsen. Dette betyr at du kan bruke denne hendelsen til å gjøre noe veldig presist, på sett tidsintervaller
    Var myTimer: Timer = new Timer (1000, 5); myTimer.start (); myTimer.addEventListener (TimerEvent.TIMER, timerHandler. ), funksjon timerHandler (event: Timerevent) {trace ("ett sekund senere ...");}
    Trinn 31: TimerEvent.TIMER_COMPLETE

    Alle tidtakere har en valgfri andre parameter. Denne parameteren er sett antall gjentakelser av timeren. Dette betyr at når nedtellingen når forsinkelsestiden, vil den starte på nytt. Hvis timeren har gjentatt så ofte som antall gjentakelser, vil det sende hendelsen TimerEvent.TIMER_COMPLETE
    Var myTimer: Timer = new Timer (1000, 5); myTimer.start (); myTimer.addEventListener (TimerEvent.TIMER_COMPLETE. , timerHandler), funksjon timerHandler (event: Timerevent) {trace ("Timeren har gjentatt 5 ganger");}
    Konklusjon

    Det var det! Jeg håper at du nå har en grundig forståelse av Actionscript 3.0 arrangement rammeverk. Innser at hendelsene som omtales er ikke alle hendelsene som finnes, jeg bare diskuterte de jeg bruker ofte. Ikke glem å alltid sjekke språket og komponenter referanse, kan det hjelpe deg mye! Det var en glede å skrive for dere! Anmeldelser