Interfața dintre două fișiere utilizând clasa LocalConnection

În acest tutorial vom folosi clasa AS3 LocalConnection pentru a trimite și primi date între două fișiere SWF diferite. Astăzi vom folosi acest lucru pentru a detecta mișcarea mouse-ului într-un SWF și o oglindă în altul.


Rezultatul final al rezultatelor

Să aruncăm o privire asupra rezultatului final la care vom lucra. Mai jos sunt două fișiere complet diferite.

Acest tutorial este împărțit în două secțiuni. Primul se va concentra pe SWF-ul de trimitere, iar al doilea va implica construirea SWF-ului care primește. De asemenea, voi folosi clasa de documente în acest tutorial.


Secțiunea 1: Trimiterea informațiilor


Pasul 1: trimiterea unui nou document Flash

Mai întâi, creați un nou fișier ActionScript 3.0.

Apoi, redimensionați fișierul la 600px × 250px.


Pasul 2: Trimiterea Adaugă un fundal

Acest pas nu este necesar pentru funcționalitate, ci mai mult pentru estetică. Adăugați imaginea în scenă și apoi blocați stratul.


Pasul 3: Trimiterea clasei de creați documente

Salvați FLA ca Sending.fla și apoi să creați un fișier AS gol. Salvați acest fișier în același director ca și FLA și denumiți-l Sending.as.

Apoi, mergeți înapoi și conectați clasa de documente la FLA.


Pasul 4: Trimiterea setării clasei de documente

Adăugați un pachet gol, o funcție de clasă și constructor în fișierul dvs. AS.

 pachet public class Sending extinde MovieClip funcția publică Trimitere () 

Pasul 5: Trimiterea claselor de import

Primul lucru pe care trebuie să-l facem în clasa noastră de documente este de a importa toate clasele de care vom avea nevoie în viitor.

 pachet import flash.display.MovieClip; importul flash.events.Event; import flash.events.StatusEvent; importul flash.events.MouseEvent; import flash.net.LocalConnection; public class Sending extinde MovieClip funcția publică Trimitere () 

Pasul 6: Trimiterea utilizării LocalConnection

Înainte de a începe trimiterea informațiilor cu o conexiune locală, este mai bine să învățăm cum să le folosim. Acest lucru este foarte simplu și constă doar din două părți:

  • Declarând o instanță a clasei.
  • Utilizarea .trimite() metodă.

Declararea unei instanțe a clasei de conectare locală este ușoară:

 private var localConnection: LocalConnection = nou LocalConnection ();

Apoi trebuie să folosim .trimite metodă. Această metodă se conectează la celălalt SWF și apoi declanșează o funcție în fișierul de primire care gestionează toate variabilele expediate. Să vedem un exemplu:

 localConnection.send ( "_ connectionName", "METHODNAME", variable1, variable2);

Atât numele de conectare, cât și numele metodei trebuie incluse în ghilimele (așa cum sunt șiruri de caractere). În plus, este mai bine să porniți numele conexiunii cu un sublinia (_). Numele metodei este pur și simplu numele funcției pe care doriți să o declanșați în SWF-ul care primește. Funcția, în SWF care primește, va fi furnizată cu variabilele ca argumente. Acum, să folosim ceea ce tocmai am învățat!


Pasul 7: Trimiterea variabilelor și constructorului

Iată toate variabilele de care trebuie să declarăm:

 private var localConnection: LocalConnection = nou LocalConnection (); privat var mX: Număr; privat var mY: Număr;

După declararea unei instanțe a conexiunii noastre locale, vom crea două variabile. mX va menține valoarea "x" a mouse-ului și mele va menține valoarea "y" a mouse-ului. Acest cod trebuie să fie plasat înaintea funcției constructorului, dar în interiorul clasei.

Următoarea este funcția constructorului. Această funcție conține doar o singură linie: adăugarea unui ascultător de evenimente pentru Event.ENTER_FRAME eveniment. Vom acoperi funcția pe care o numește în pasul următor. Iată funcția finalizată a constructorului:

 funcția publică Trimitere () stage.addEventListener (Event.ENTER_FRAME, mainLoop, false, 0, true); 

Pasul 8: Trimiterea funcției mainLoop

În pasul anterior, am creat un ascultător de evenimente care numește această funcție o dată la fiecare cadru. Această funcție va face două lucruri. Primul este să setați variabilele mX și mele egală cu cea a mouse-ului 'X' și 'Y' poziția respectivă. Al doilea este de a trimite aceste două variabile, prin conexiunea locală, la celălalt fișier SWF.

Iată funcția finită:

 funcția privată mainLoop (e: Event): void mX = mouseX; mY = șoarece; localConnection.send ( "_ mouseConnection", "processData", AMX, mY); 

La trimiterea datelor, folosim "_MouseConnection" ca nume de conexiune și "procesarea datelor" ca nume de metoda. Aceasta înseamnă că va încerca să sune procesData (mX, mY).


Pasul 9: Trimiterea evenimentului de stare

Suntem aproape terminați. Tot ce trebuie să faceți este să gestionați evenimentul de stare. Obiectul LocalConnection expediază evenimentele de stare; în acest proiect nu vom folosi evenimentele; cu toate acestea, dacă nu le ascultăm, vom primi erori precum: "Eroare # 2044: Starea necondiționată :. = nivel de eroare, cod =“

Am importat deja evenimentul în Pasul 5, deci mai întâi vom adăuga un ascultător de eveniment pentru un eveniment de stare în funcția constructor:

 funcția publică Trimitere () stage.addEventListener (Event.ENTER_FRAME, mainLoop, false, 0, true); localConnection.addEventListener (StatusEvent.STATUS, onStatus); 

Acum trebuie să creăm o funcție necompletată pentru a răspunde evenimentului. Se numește funcția 'OnStatus'.

 funcția privată onStatus (e: StatusEvent): void ;

Pasul 10: Trimiterea rezumatului

În secțiunea 1, am învățat cum să folosim clasa LocalConnection pentru a trimite informații, printr-o conexiune, unui alt fișier flash. Aici este fișierul AS finalizat pentru Secțiunea 1:

 pachet import flash.display.MovieClip; importul flash.events.Event; import flash.events.StatusEvent; importul flash.events.MouseEvent; import flash.net.LocalConnection; public class Sending extinde MovieClip private var localConnection: LocalConnection = new LocalConnection (); privat var mX: Număr; privat var mY: Număr; funcția publică Trimitere () stage.addEventListener (Event.ENTER_FRAME, mainLoop, false, 0, true); localConnection.addEventListener (StatusEvent.STATUS, onStatus);  funcția privată mainLoop (e: Event): void mX = mouseX; mY = șoarece; localConnection.send ( "_ mouseConnection", "processData", AMX, mY);  funcția privată onStatus (e: StatusEvent): void ; 

Secțiunea 2: Primirea informațiilor


Pasul 11: Primirea unui nou document Flash

Mai întâi, creați un nou fișier ActionScript 3.0.

Apoi, redimensionați fișierul la 600px × 250px.


Pasul 12: Primirea adăugați un fundal

Ca și până acum, acest pas nu este necesar pentru funcționalitate, ci mai mult pentru estetică. Adăugați imaginea în scenă și apoi blocați stratul.


Pasul 13: Primirea Creează un obiect

Acum trebuie să creați un obiect pentru a reflecta indicatorul mouse-ului. Acesta va fi dat la fel X și Y valori ca indicatorul mouse-ului în celălalt fișier prin ActionScript.

În acest exemplu, folosesc o pictogramă a unui creion (prin amabilitatea lui WeFunction). Importați pictograma pe scenă, în stratul său propriu, apoi convertiți-o la un MovieClip și dați-i un nume de instanță cursor_mc.

În mod implicit, punctul de înregistrare (crucea, nu cercul) se află în colțul din stânga sus. Acest lucru înseamnă că, atunci când finalizăm proiectul, creionul va fi ușor în afara locației mouse-ului. Pentru a repara, faceți dublu clic pe creion și aliniați-l astfel încât sfârșitul creionului să se afle pe punctul de înregistrare.


Pasul 14: Primirea unei clase de documente

Ca și în prima parte, salvați FLA ca Receiving.fla și apoi să creați un fișier AS gol. Salvați acest fișier în același director ca și FLA și denumiți-l Receiving.as.

Apoi, mergeți înapoi și conectați clasa de documente la FLA.


Pasul 15: Primirea setării clasei de documente

Adăugați un pachet gol, o funcție de clasă și constructor în fișierul dvs. AS.

 pachet public class Primirea extinde MovieClip funcția publică Primirea () 

Pasul 16: Primirea de clase de import

La fel ca înainte, importați toate clasele de care avem nevoie.

 pachet import flash.display.MovieClip; importul flash.events.Event; import flash.events.StatusEvent; import flash.net.LocalConnection; clasa publică Primirea extinde MovieClip funcția publică primită () 

Pasul 17: Primirea utilizării LocalConnection

Suntem gata să începem să scriem codul pentru a primi informațiile de la conexiunea locală. Iată ce trebuie să facem:

  • Declarați o instanță a clasei.
  • Conectați-vă la conexiunea locală.
  • Seteaza client pentru conexiunea locală.
  • Creați o metodă pentru a primi date de la conexiunea locală.

Declarația unei instanțe a clasei de conexiune locală este aceeași ca înainte:

 private var localConnection: LocalConnection = nou LocalConnection ();

Apoi trebuie să ne conectăm la conexiunea pe care am creat-o când am trimis datele din celălalt fișier.

 localConnection.connect ( "_ connectionName");

Acum am setat clientul. Clientul indică obiectul pe care sunt apelate funcțiile. În mod normal, acesta este setat la acest.

 localConnection.client = this;

În cele din urmă, trebuie să creăm o funcție necompletată care va primi datele prin argumentele sale.

 funcția publică funcțiaName (variabilă1: tip, variabilă2: tip ...): void ;

Pasul 18: Primirea declarării funcției LocalConnection și scrierea funcției Constructor

Acum că știm cum să primim informații cu o conexiune locală, putem începe scrierea scenariului. Mai întâi declarați o nouă instanță LocalConnection. Plasați acest lucru înaintea funcției constructorului din clasă.

 private var localConnection: LocalConnection = nou LocalConnection ();

Apoi, în funcția constructor, conectați-vă la conexiunea locală și setați clientul:

 funcția publică Receiving () localConnection.connect ("_ mouseConnection"); localConnection.client = this; 

(Observați că ne conectăm la o conexiune locală cu același ID ca în fișierul Trimitere.)


Pasul 19: Primirea funcției processData ()

Când au fost trimise informații din fișierul de trimitere, a fost denumită o funcție sau o metodă de primire. În acest proiect, am folosit funcția procesarea datelor(). Următoarea funcție primește funcția X și Y se coordonează ca argumente și apoi le folosește pentru a stabili poziția creionului.

 funcția publică funcția Data (mX: Număr, mY: Număr) cursor_mc.x = mX; cursor_mc.y = mY; 

Această funcție trebuie să fie a public astfel încât să poată fi accesată prin conexiunea locală.


Pasul 20: Primirea evenimentului de stare

Ca și în secțiunea 1, deoarece folosim o conexiune locală, va trebui să gestionăm evenimentele de stare. Evenimentul a fost deja importat la pasul 16, deci acum trebuie să adăugăm un eveniment ascultător pentru evenimente. Să adăugăm o linie la funcția constructor:

 funcția publică Receiving () localConnection.connect ("_ mouseConnection"); localConnection.client = this; localConnection.addEventListener (StatusEvent.STATUS, onStatus); 

Apoi, creăm o funcție necompletată pentru a răspunde la ascultătorul evenimentului:

 funcția privată onStatus (e: StatusEvent): void ;

Pasul 21: Primirea rezumatului

În această a doua parte, am primit informații de la o conexiune locală și am procesat-o. Aici este fișierul nostru finalizat AS:

 pachet import flash.display.MovieClip; importul flash.events.Event; import flash.events.StatusEvent; import flash.net.LocalConnection; public class Primirea extinde MovieClip private var localConnection: LocalConnection = new LocalConnection (); funcția publică Receiving () localConnection.connect ("_ mouseConnection"); localConnection.client = this; localConnection.addEventListener (StatusEvent.STATUS, onStatus);  funcția publică funcțiaData (mX: Număr, mY: Număr) cursor_mc.x = mX; cursor_mc.y = mY;  funcția privată onStatus (e: StatusEvent): void ; 

Concluzie

În acest tutorial am învățat cum să folosim clasa LocalConnection. Ați văzut cum să trimiteți informații, să primiți informații și, de asemenea, cum să gestionați evenimentele de stare. Această metodă este adesea folosită în publicitatea pe web atunci când un agent de publicitate dorește să sincronizeze un anunț între două poziții diferite de anunțuri pe o singură pagină web. Același principiu poate fi ușor dezvoltat pentru a include comunicații bidirecționale între două fișiere.

Vă mulțumim că ați citit acest tutorial; sper ca ti-a placut!

Cod