Gränssnitt mellan två filer med LocalConnection Class

I denna handledning använder vi AS3 LocalConnection-klassen för att skicka och ta emot data mellan två olika SWF-filer. Idag använder vi detta för att upptäcka musrörelsen i en SWF och spegla den i en annan.


Slutresultatförhandsvisning

Låt oss ta en titt på det slutliga resultatet vi kommer att arbeta för. Nedan finns två helt olika filer.

Denna handledning är uppdelad i två sektioner. Den första kommer att koncentrera sig på den sändande SWF och den andra kommer att involvera att bygga den mottagande SWF. Jag kommer också att använda dokumentklassen under hela denna handledning.


Avsnitt 1: Skicka information


Steg 1: Skickar nytt Flash-dokument

För det första, skapa en ny ActionScript 3.0-fil.

Ändra sedan storleken på filen till 600px × 250px.


Steg 2: Sändning Lägg till en bakgrund

Detta steg är inte nödvändigt för funktionalitet, men mer för estetik. Lägg till din bild i scenen och lås sedan dess lager.


Steg 3: Sändning Skapa dokumentklass

Spara din FLA som Sending.fla och skapa sedan en tom AS-fil. Spara den här filen i samma mapp som din FLA och namnge den Sending.as.

Gå sedan tillbaka och länka dokumentklassen till FLA.


Steg 4: Sändning Ställ in dokumentklass

Lägg till ett tomt paket, klass och konstruktörsfunktion till din AS-fil.

 paket public class Sending utökar MovieClip public function Sending () 

Steg 5: Skicka importklasser

Det första vi behöver göra i vår dokumentklass är att importera alla de klasser som vi behöver i framtiden.

 paket import flash.display.MovieClip; importera flash.events.Event; importera flash.events.StatusEvent; importera flash.events.MouseEvent; importera flash.net.LocalConnection; public class Sending utökar MovieClip public function Sending () 

Steg 6: Sändning av LocalConnection Användning

Innan vi börjar skicka information med en lokal anslutning är det bäst att vi lär oss exakt hur vi använder den. Det här är väldigt enkelt och består av endast två delar:

  • Deklarera en förekomst av klassen.
  • Använda .skicka() metod.

Att avklara ett exempel på klassen Lokal anslutning är enkelt:

 privat var localConnection: LocalConnection = new LocalConnection ();

Nästa måste vi använda .skicka metod. Den här metoden kopplas till den andra SWF-en och triggar sedan en funktion i mottagarfilen som hanterar eventuella variabler som skickas över. Låt oss se ett exempel:

 LocalConnection.send ( "_ connection", "method", variable1, variabel2);

Både anslutningsnamnet och metodnamnet ska bifogas citattecken (eftersom de är strängar). Dessutom är det bäst att starta anslutningsnamnet med en understreck (_). Metodnamnet är helt enkelt namnet på den funktion som du vill utlösas i den mottagande SWF-enheten. Funktionen, i den mottagande SWF, kommer att förses med variablerna som argument. Nu, låt oss använda vad vi just har lärt oss!


Steg 7: Sändning av variabler och konstruktor

Här är alla variabler som vi behöver förklara:

 privat var localConnection: LocalConnection = new LocalConnection (); privat var mX: Number; privat var MY: Number;

Efter att ha förklarat en förekomst av vår lokala anslutning skapar vi två variabler. mX kommer att hålla musens "x" -värde och min kommer att hålla musens "y" -värde. Denna kod måste placeras före konstruktörens funktion, men inne i klassen.

Nästa är konstruktörfunktionen. Den här funktionen innehåller bara en rad: lägger till en händelse lyssnare för Event.ENTER_FRAME händelse. Vi kommer att täcka den funktion det ringer i nästa steg. Här är den färdiga konstruktörsfunktionen:

 Offentlig funktion Sändning () stage.addEventListener (Event.ENTER_FRAME, mainLoop, false, 0, true); 

Steg 8: Skicka mainLoop-funktionen

I föregående steg skapade vi en händelse lyssnare som kallar denna funktion en gång varje ram. Denna funktion kommer att göra två saker. Den första är att ställa in variablerna mX och min lika med musens 'X' och 'Y' position respektive. Den andra är att skicka dessa två variabler via den lokala anslutningen till den andra SWF-filen.

Här är den färdiga funktionen:

 privat funktion mainLoop (e: Event): void mX = mouseX; mY = mouseY; LocalConnection.send ( "_ mouseConnection", "processData", mX, mY); 

När vi skickar data använder vi "_MouseConnection" som anslutningsnamn och "ProcessData" som metodnamn. Det betyder att det kommer att försöka ringa processdata (mX, mY).


Steg 9: Skicka statushändelse

Vi är nästan färdiga. Allt som återstår att göra är att hantera statushändelsen. Objektet LocalConnection skickar statushändelser; I det här projektet kommer vi inte att använda händelserna. Om vi ​​inte lyssnar på dem kommer vi emellertid att få fel som detta: "Fel # 2044: Unhandled StatusEvent :. nivå = fel, kod ='

Vi har redan importerat händelsen i steg 5, så först lägger vi till en händelseloggare för en statushändelse i konstruktörsfunktionen:

 Offentlig funktion Sändning () stage.addEventListener (Event.ENTER_FRAME, mainLoop, false, 0, true); localConnection.addEventListener (StatusEvent.STATUS, onStatus); 

Nu behöver vi skapa en tom funktion för att svara på evenemanget. Funktionen heter 'OnStatus'.

 privat funktion onStatus (e: StatusEvent): void ;

Steg 10: Sändningsöversikt

I avsnitt 1 har vi lärt oss hur du använder klassen LocalConnection för att skicka information via en anslutning till en annan flashfil. Här är vår färdiga AS-fil för avsnitt 1:

 paket import flash.display.MovieClip; importera flash.events.Event; importera flash.events.StatusEvent; importera flash.events.MouseEvent; importera flash.net.LocalConnection; public class Sending utökar MovieClip privat var localConnection: LocalConnection = new LocalConnection (); privat var mX: Number; privat var MY: Number; Offentlig funktion Sändning () stage.addEventListener (Event.ENTER_FRAME, mainLoop, false, 0, true); localConnection.addEventListener (StatusEvent.STATUS, onStatus);  privat funktion mainLoop (e: Event): void mX = mouseX; mY = mouseY; LocalConnection.send ( "_ mouseConnection", "processData", mX, mY);  privat funktion onStatus (e: StatusEvent): void ; 

Avsnitt 2: Mottagande av information


Steg 11: Ta emot nytt Flash-dokument

För det första, skapa en ny ActionScript 3.0-fil.

Ändra sedan storleken på filen till 600px × 250px.


Steg 12: Ta emot Lägg till en bakgrund

Som tidigare är detta steg inte nödvändigt för funktionalitet, men mer för estetik. Lägg till din bild i scenen och lås sedan dess lager.


Steg 13: Ta emot Skapa ett objekt

Vi behöver nu skapa ett objekt för att spegla muspekaren. Det kommer att ges samma X och Y värden som muspekaren i den andra filen via ActionScript.

I det här exemplet använder jag en ikon för en penna (med tillstånd av WeFunction). Importera ikonen till scenen, i sitt eget lager och konvertera det sedan till en MovieClip och ge det ett förekomstnamn på cursor_mc.

Som standard är registreringspunkten (korset, inte cirkeln) längst upp till vänster. Det betyder att när vi fullbordar projektet kommer blyertspenningen att vara något avstånd från musens plats. För att fixa, dubbelklicka på pennan och ändra det så att penningens slut är på registreringsplatsen.


Steg 14: Ta emot Skapa dokumentklass

Som i första delen, spara din FLA som Receiving.fla och skapa sedan en tom AS-fil. Spara den här filen i samma mapp som din FLA och namnge den Receiving.as.

Gå sedan tillbaka och länka dokumentklassen till FLA.


Steg 15: Ta emot konfigurera dokumentklassen

Lägg till ett tomt paket, klass och konstruktörsfunktion till din AS-fil.

 paket public class Mottagning utökar MovieClip public function Receiving () 

Steg 16: Ta emot importklasser

Precis som tidigare importerar du alla de klasser vi behöver.

 paket import flash.display.MovieClip; importera flash.events.Event; importera flash.events.StatusEvent; importera flash.net.LocalConnection; offentlig klass Mottagning utökar MovieClip allmän funktion Mottagning () 

Steg 17: Ta emot LocalConnection-användning

Vi är nu redo att börja skriva koden för att ta emot informationen från den lokala anslutningen. Här är vad vi behöver göra:

  • Förklara en förekomst av klassen.
  • Anslut till den lokala anslutningen.
  • Ställ in klient för lokal anslutning.
  • Skapa en metod för att ta emot data från den lokala anslutningen.

Deklarera en instans av klassen Lokal anslutning är densamma som tidigare:

 privat var localConnection: LocalConnection = new LocalConnection ();

Nästa måste vi ansluta till den anslutning som vi skapade när vi skickade data från den andra filen.

 LocalConnection.connect ( "_ connection");

Nu ställer vi upp klienten. Klienten anger det objekt som funktionerna kallas på. Den är normalt inställd på detta.

 localConnection.client = this;

Slutligen måste vi skapa en blank funktion som kommer att ta emot data genom sina argument.

 public function methodName (variabel1: typ, variabel2: typ ...): void ;

Steg 18: Mottagande av deklaration av LocalConnection och Skrivning av konstruktörsfunktionen

Nu när vi vet hur vi får information med en lokal anslutning, kan vi börja skriva skriptet. Förklara först en ny LocalConnection-förekomst. Placera detta före konstruktörfunktionen i klassen.

 privat var localConnection: LocalConnection = new LocalConnection ();

Sedan, i konstruktörfunktionen, anslut till den lokala anslutningen och ställ in dess klient:

 allmän funktion Receiving () localConnection.connect ("_ mouseConnection"); localConnection.client = this; 

(Observera att vi ansluter till en lokal anslutning med samma ID som vi använde i sändningsfilen.)


Steg 19: Ta emot processData () Funktion

När information skickades från sändningsfilen namngavs en mottagningsfunktion eller metod. I det här projektet använde jag funktionen processData (). Följande funktion tar emot X och Y koordinater som argument och använder dem sedan för att ställa in pennapositionen.

 public function processData (mX: Number, mY: Number) cursor_mc.x = mX; markör_mc.y = mY; 

Denna funktion måste vara en offentlig funktion så att den kan nås via den lokala anslutningen.


Steg 20: Mottagning av statushändelse

Precis som med avsnitt 1, eftersom vi använder en lokal anslutning, måste vi hantera statushändelser. Händelsen har redan importerats i steg 16, så vi behöver nu lägga till en händelseloggare för händelserna. Låt oss lägga till en rad till konstruktörfunktionen:

 allmän funktion Receiving () localConnection.connect ("_ mouseConnection"); localConnection.client = this; localConnection.addEventListener (StatusEvent.STATUS, onStatus); 

Då skapar vi en tom funktion för att svara på händelselyssnaren:

 privat funktion onStatus (e: StatusEvent): void ;

Steg 21: Mottagande Sammanfattning

I denna andra del har vi framgångsrikt fått information från en lokal anslutning och bearbetat den. Här är vår färdiga AS-fil:

 paket import flash.display.MovieClip; importera flash.events.Event; importera flash.events.StatusEvent; importera flash.net.LocalConnection; allmän klass Mottagning utökar MovieClip privat var localConnection: LocalConnection = new LocalConnection (); allmän funktion Receiving () localConnection.connect ("_ mouseConnection"); localConnection.client = this; localConnection.addEventListener (StatusEvent.STATUS, onStatus);  public function processData (mX: Number, mY: Number) cursor_mc.x = mX; markör_mc.y = mY;  privat funktion onStatus (e: StatusEvent): void ; 

Slutsats

I denna handledning har vi lärt oss hur vi använder klassen LocalConnection. Du har sett hur du skickar information, mottar information och hur man hanterar statushändelser. Denna metod används ofta i webbannonsering när en annonsör vill synkronisera en annons mellan två olika annonspositioner på en enda webbsida. Samma princip kan enkelt utvecklas för att inkludera dubbelriktad kommunikation mellan två filer.

Tack för att du läste denna handledning Jag hoppas att du tyckte om det!