Grensesnitt mellom to filer ved hjelp av LocalConnection Class

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.


Endelig resultatforhåndsvisning

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.


Seksjon 1: Sende informasjon


Trinn 1: Sende nytt Flash-dokument

For det første, opprett en ny ActionScript 3.0-fil.

Endre størrelsen på filen til 600px × 250px.


Trinn 2: Sende Legg til en bakgrunn

Dette trinnet er ikke nødvendig for funksjonalitet, men mer for estetikk. Legg bildet til scenen og lås deretter laget.


Trinn 3: Sende Opprett Dokumentklasse

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.


Trinn 4: Sende Oppsett Dokumentklasse

Legg til en tom pakke, klasse og konstruktørfunksjon til din AS-fil.

 pakke offentlig klasse Sending utvider MovieClip offentlig funksjon Sending () 

Trinn 5: Sende importeringsklasser

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 () 

Trinn 6: Sende LocalConnection Bruk

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:

  • Deklarere en forekomst av klassen.
  • Bruker .sende() metode.

Å 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!


Trinn 7: Sende variabler og konstruksjon

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); 

Trinn 8: Sender mainLoop-funksjonen

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).


Trinn 9: Sending av statushendelse

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 ;

Trinn 10: Sende sammendrag

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 ; 

Seksjon 2: Motta informasjon


Trinn 11: Motta nytt Flash-dokument

For det første, opprett en ny ActionScript 3.0-fil.

Endre størrelsen på filen til 600px × 250px.


Trinn 12: Motta Legg til en bakgrunn

Som før er dette trinnet ikke nødvendig for funksjonalitet, men mer for estetikk. Legg bildet til scenen og lås deretter laget.


Trinn 13: Motta Lag et objekt

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.


Trinn 14: Motta opprette dokumentklasse

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.


Trinn 15: Motta oppsett av dokumentklasse

Legg til en tom pakke, klasse og konstruktørfunksjon til din AS-fil.

 pakke offentlig klasse Mottak utvider MovieClip offentlig funksjon Mottak () 

Trinn 16: Motta importklasser

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 () 

Trinn 17: Motta LocalConnection Bruk

Vi er nå klar til å begynne å skrive koden for å motta informasjonen fra den lokale tilkoblingen. Her er hva vi trenger å gjøre:

  • Erklære en forekomst av klassen.
  • Koble til den lokale tilkoblingen.
  • Sett klient for lokal tilkobling.
  • Lag en metode for å motta data fra den lokale tilkoblingen.

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 ;

Trinn 18: Motta deklarering av LocalConnection og skriving av konstruktørfunksjonen

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.)


Trinn 19: Motta prosessData () Funksjon

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.


Trinn 20: Motta statushendelse

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 ;

Trinn 21: Motta sammendrag

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 ; 

Konklusjon

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!