Î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.
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.
Mai întâi, creați un nou fișier ActionScript 3.0.
Apoi, redimensionați fișierul la 600px × 250px.
Acest pas nu este necesar pentru funcționalitate, ci mai mult pentru estetică. Adăugați imaginea în scenă și apoi blocați stratul.
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.
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 ()
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 ()
Î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:
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!
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);
Î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)
.
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 ;
Î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 ;
Mai întâi, creați un nou fișier ActionScript 3.0.
Apoi, redimensionați fișierul la 600px × 250px.
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.
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.
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.
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 ()
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ă ()
Suntem gata să începem să scriem codul pentru a primi informațiile de la conexiunea locală. Iată ce trebuie să facem:
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 ;
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.)
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ă.
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 ;
Î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 ;
Î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!