I denne opplæringen bruker vi AS3 LocalConnection-klassen til å sende og motta data mellom to forskjellige SWF-filer. I dag bruker vi dette til å oppdage musebevegelser i en SWF og speil den i en annen.
La oss se på det endelige resultatet vi skal jobbe for. Nedenfor er to helt forskjellige filer.
Denne opplæringen er delt inn i to seksjoner. Den første vil konsentrere seg om den sendte SWF og den andre vil innebære å bygge den mottatte SWF. Jeg vil også bruke dokumentklassen gjennom hele denne opplæringen.
For det første, opprett en ny ActionScript 3.0-fil.
Endre størrelsen på filen til 600px × 250px.
Dette trinnet er ikke nødvendig for funksjonalitet, men mer for estetikk. Legg bildet til scenen og lås deretter laget.
Lagre FLA som Sending.fla og deretter lage en tom AS-fil. Lagre denne filen i samme mappe som FLA, og navnet på den Sending.as.
Deretter går du tilbake og lenker dokumentet til FLA.
Legg til en tom pakke, klasse og konstruktørfunksjon til din AS-fil.
pakke offentlig klasse Sending utvider MovieClip offentlig funksjon Sending ()
Det første vi må gjøre i vår dokumentklasse er å importere alle klassene som vi trenger i fremtiden.
pakke import flash.display.MovieClip; importere flash.events.Event; importer flash.events.StatusEvent; importer flash.events.MouseEvent; importer flash.net.LocalConnection; offentlig klasse Sending utvider MovieClip offentlig funksjon Sending ()
Før vi begynner å sende informasjon med en lokal tilkobling, er det best at vi lærer nøyaktig hvordan du bruker det. Dette er veldig enkelt og består av bare to deler:
Å avklare en forekomst av lokalforbindelsesklassen er enkelt:
private var localConnection: LocalConnection = new LocalConnection ();
Neste må vi bruke .sende metode. Denne metoden kobles til den andre SWF og utløser deretter en funksjon i mottaksfilen som håndterer eventuelle variabler som sendes over. La oss se et eksempel:
localConnection.send ( "_ Connection", "METHOD", variable1, variable2);
Både tilkoblingsnavnet og metodenavnet skal være vedlagt anførselstegn (som de er strenger). I tillegg er det best å starte tilkoblingsnavnet med en understrek (_). Metodenavnet er bare navnet på funksjonen som du vil bli utløst i den mottatte SWF. Funksjonen i mottaker SWF vil bli forsynt med variablene som argumenter. La oss nå bruke det vi nettopp har lært!
Her er alle variablene vi trenger å erklære:
private var localConnection: LocalConnection = new LocalConnection (); privat var mX: nummer; privat var mY: tall;
Etter å ha erklært en forekomst av vår lokale forbindelse, oppretter vi to variabler. mX vil holde musens x-verdi og min vil holde musens "y" -verdi. Denne koden må plasseres før konstruktørfunksjonen, men inne i klassen.
Neste er konstruktørfunksjonen. Denne funksjonen inneholder bare en linje: legger til en hendelselytter for Event.ENTER_FRAME begivenhet. Vi vil dekke funksjonen den kaller i neste trinn. Her er den ferdige konstruktørfunksjonen:
offentlig funksjon Sende () stage.addEventListener (Event.ENTER_FRAME, mainLoop, false, 0, true);
I det forrige trinnet opprettet vi en hendelseslytter som kaller denne funksjonen en gang hver ramme. Denne funksjonen vil gjøre to ting. Den første er å angi variablene mX og min lik musens 'X' og 'Y' stilling henholdsvis. Den andre er å sende disse to variablene, via den lokale tilkoblingen, til den andre SWF-filen.
Her er den ferdige funksjonen:
privat funksjon mainLoop (e: Event): void mX = mouseX; mY = mouseY; localConnection.send ( "_ mouseConnection", "processData", MX, MY);
Når vi sender data, bruker vi "_MouseConnection" som tilkoblingsnavnet og "ProcessData" som metode navn. Dette betyr at det vil forsøke å ringe prosessdata (mX, mY)
.
Vi er nesten ferdig. Alt som gjenstår å gjøre er å håndtere statushendelsen. LocalConnection-objektet sender statushendelser; I dette prosjektet bruker vi ikke hendelsene; Men hvis vi ikke lytter for dem, vil vi motta feil som dette: Feil # 2044: Ubehandlet StatusEvent :. nivå = feil, kode ='
Vi har allerede importert arrangementet i trinn 5, så først vil vi legge til en hendelselytter for en statushendelse i konstruktørfunksjonen:
offentlig funksjon Sende () stage.addEventListener (Event.ENTER_FRAME, mainLoop, false, 0, true); localConnection.addEventListener (StatusEvent.STATUS, onStatus);
Nå må vi lage en tom funksjon for å svare på arrangementet. Funksjonen kalles 'OnStatus'.
privat funksjon onStatus (e: StatusEvent): void ;
I avsnitt 1 har vi lært hvordan du bruker LocalConnection-klassen til å sende informasjon, via en tilkobling, til en annen flash-fil. Her er vår ferdige AS-fil for Seksjon 1:
pakke import flash.display.MovieClip; importere flash.events.Event; importer flash.events.StatusEvent; importer flash.events.MouseEvent; importer flash.net.LocalConnection; offentlig klasse Sending utvider MovieClip private var localConnection: LocalConnection = new LocalConnection (); privat var mX: nummer; privat var mY: tall; offentlig funksjon Sende () stage.addEventListener (Event.ENTER_FRAME, mainLoop, false, 0, true); localConnection.addEventListener (StatusEvent.STATUS, onStatus); privat funksjon mainLoop (e: Event): void mX = mouseX; mY = mouseY; localConnection.send ( "_ mouseConnection", "processData", MX, MY); privat funksjon onStatus (e: StatusEvent): void ;
For det første, opprett en ny ActionScript 3.0-fil.
Endre størrelsen på filen til 600px × 250px.
Som før er dette trinnet ikke nødvendig for funksjonalitet, men mer for estetikk. Legg bildet til scenen og lås deretter laget.
Vi må nå lage et objekt for å speile musepekeren. Det vil bli gitt det samme X og Y verdier som musemarkøren i den andre filen via ActionScript.
I dette eksemplet bruker jeg et ikon av en blyant (med tak i WeFunction). Importer ikonet til scenen, i eget lag, og konverter deretter det til en MovieClip og gi det et forekomstnavn på cursor_mc.
Som standard er registreringspunktet (krysset, ikke sirkelen) øverst i venstre hjørne. Dette betyr at når vi fullfører prosjektet, vil blyanten være litt avstand fra musens plassering. For å fikse, dobbeltklikk på blyanten og juster det slik at enden av blyanten er på registreringsstedet.
Som i første del, lagre FLA som Receiving.fla og deretter lage en tom AS-fil. Lagre denne filen i samme mappe som FLA, og navnet på den Receiving.as.
Deretter går du tilbake og lenker dokumentet til FLA.
Legg til en tom pakke, klasse og konstruktørfunksjon til din AS-fil.
pakke offentlig klasse Mottak utvider MovieClip offentlig funksjon Mottak ()
Akkurat som før importerer du alle klassene vi trenger.
pakke import flash.display.MovieClip; importere flash.events.Event; importer flash.events.StatusEvent; importer flash.net.LocalConnection; offentlig klasse Mottak utvider MovieClip offentlig funksjon mottak ()
Vi er nå klar til å begynne å skrive koden for å motta informasjonen fra den lokale tilkoblingen. Her er hva vi trenger å gjøre:
Deklarering av en forekomst av lokalforbindelsesklassen er den samme som før:
private var localConnection: LocalConnection = new LocalConnection ();
Deretter må vi koble til tilkoblingen som vi opprettet da vi sendte dataene fra den andre filen.
localConnection.connect ( "_ Connection");
Nå setter vi klienten. Klienten angir objektet som funksjonene kalles på. Det er normalt satt til dette.
localConnection.client = this;
Til slutt må vi lage en tom funksjon som vil motta dataene gjennom sine argumenter.
Public Function MethodName (variable1: type, variable2: type ...): void ;
Nå som vi vet hvordan vi mottar informasjon med en lokal tilkobling, kan vi begynne å skrive skriptet. Først erklærer du en ny LocalConnection-forekomst. Plasser dette før konstruktørfunksjonen i klassen.
private var localConnection: LocalConnection = new LocalConnection ();
Deretter kobler du til den lokale tilkoblingen i konstruktørfunksjonen og setter klienten:
offentlig funksjon mottak () localConnection.connect ("_ mouseConnection"); localConnection.client = this;
(Legg merke til at vi kobler til en lokal tilkobling med samme ID som vi brukte i sendingsfilen.)
Når informasjon ble sendt fra sendingsfilen, ble det mottatt en mottaksfunksjon eller metode. I dette prosjektet brukte jeg funksjonen processData (). Følgende funksjon mottar X og Y koordinerer som argumenter og bruker dem til å sette blyantens posisjon.
offentlig funksjon prosessData (mX: tall, mY: tall) cursor_mc.x = mX; cursor_mc.y = mY;
Denne funksjonen må være a offentlig fungere slik at den kan nås via den lokale tilkoblingen.
Som med § 1, fordi vi bruker en lokal tilkobling, må vi håndtere statushendelser. Hendelsen er allerede importert i trinn 16, så vi må nå legge til en hendelselytter for hendelsene. La oss legge til en linje i konstruktørfunksjonen:
offentlig funksjon mottak () localConnection.connect ("_ mouseConnection"); localConnection.client = this; localConnection.addEventListener (StatusEvent.STATUS, onStatus);
Deretter oppretter vi en tom funksjon for å svare på hendelseslytteren:
privat funksjon onStatus (e: StatusEvent): void ;
I denne andre delen har vi mottatt informasjon fra en lokal tilkobling og behandlet den. Her er vår ferdige AS-fil:
pakke import flash.display.MovieClip; importere flash.events.Event; importer flash.events.StatusEvent; importer flash.net.LocalConnection; offentlig klasse Mottak utvider MovieClip privat var localConnection: LocalConnection = ny LocalConnection (); offentlig funksjon mottak () localConnection.connect ("_ mouseConnection"); localConnection.client = this; localConnection.addEventListener (StatusEvent.STATUS, onStatus); offentlig funksjon prosessData (mX: tall, mY: tall) cursor_mc.x = mX; cursor_mc.y = mY; privat funksjon onStatus (e: StatusEvent): void ;
I denne opplæringen har vi lært hvordan du bruker klassen LocalConnection. Du har sett hvordan du sender informasjon, mottar informasjon og også hvordan du håndterer statushendelser. Denne metoden brukes ofte i webannonsering når en annonsør ønsker å synkronisere en annonse mellom to forskjellige annonseplasseringer på en enkelt nettside. Det samme prinsippet kan enkelt utvikles for å inkludere toveiskommunikasjon mellom to filer.
Takk for at du har lest denne opplæringen; jeg håper du likte det!