In questo tutorial useremo la classe AS3 LocalConnection per inviare e ricevere dati tra due diversi file SWF. Oggi lo useremo per rilevare il movimento del mouse in un SWF e specularlo in un altro.
Diamo un'occhiata al risultato finale su cui lavoreremo. Di seguito sono riportati due file completamente diversi.
Questo tutorial è diviso in due sezioni. Il primo si concentrerà sul file SWF di invio e il secondo riguarderà la creazione del file SWF ricevente. Userò anche la classe del documento durante questo tutorial.
Innanzitutto, crea un nuovo file ActionScript 3.0.
Quindi ridimensiona il file a 600 px x 250 px.
Questo passaggio non è necessario per la funzionalità, ma più per l'estetica. Aggiungi la tua immagine allo stage e poi blocca il suo livello.
Salva il tuo FLA come Sending.fla e quindi creare un file AS vuoto. Salva questo file nella stessa cartella del tuo FLA e chiamalo Sending.as.
Quindi torna indietro e collega la classe del documento al FLA.
Aggiungi un pacchetto vuoto, una classe e una funzione di costruzione al tuo file AS.
pacchetto public class L'invio estende MovieClip invio funzione pubblico ()
La prima cosa che dobbiamo fare nella nostra classe di documenti è importare tutte le classi di cui avremo bisogno in futuro.
package import flash.display.MovieClip; import flash.events.Event; import flash.events.StatusEvent; import flash.events.MouseEvent; import flash.net.LocalConnection; public class L'invio estende Movie Clip public function Sending ()
Prima di iniziare a inviare informazioni con una connessione locale, è meglio che apprendiamo esattamente come usarlo. Questo è veramente semplice e si compone di due sole parti:
Dichiarare un'istanza della classe Local Connection è semplice:
private var localConnection: LocalConnection = new LocalConnection ();
Quindi dobbiamo usare il .inviare metodo. Questo metodo si connette all'altro SWF e quindi attiva una funzione nel file di ricezione che gestisce qualsiasi variabile che viene inviata attraverso. Vediamo un esempio:
LocalConnection.send ( "_ connectionName", "methodName", Variabile1, variabile2);
Sia il nome della connessione che il nome del metodo devono essere racchiusi tra virgolette (poiché sono stringhe). Inoltre, è meglio iniziare il nome della connessione con un sottolineare (_). Il nome del metodo è semplicemente il nome della funzione che si desidera attivare nel SWF di ricezione. La funzione, nel file SWF ricevente, verrà fornita con le variabili come argomenti. Ora, usiamo ciò che abbiamo appena imparato!
Ecco tutte le variabili che dobbiamo dichiarare:
private var localConnection: LocalConnection = new LocalConnection (); private var mX: Number; private var mY: Number;
Dopo aver dichiarato un'istanza della nostra connessione locale, creiamo due variabili. mX manterrà il valore 'x' del mouse e mio manterrà il valore 'y' del mouse. Questo codice deve essere inserito prima della funzione di costruzione, ma all'interno della classe.
La prossima è la funzione di costruzione. Questa funzione contiene una sola riga: aggiunta di un listener di eventi per il Event.ENTER_FRAME evento. Copriremo la funzione che chiama nel passaggio successivo. Ecco la funzione di costruzione completata:
funzione pubblica Sending () stage.addEventListener (Event.ENTER_FRAME, mainLoop, false, 0, true);
Nel passaggio precedente, abbiamo creato un listener di eventi che chiama questa funzione una volta ogni frame. Questa funzione farà due cose. Il primo è impostare le variabili mX e mio uguale a quello del mouse 'X' e 'Y' posizione rispettivamente. Il secondo è quello di inviare queste due variabili, attraverso la Connessione locale, all'altro file SWF.
Ecco la funzione completata:
funzione privata mainLoop (e: Event): void mX = mouseX; mY = mouseY; LocalConnection.send ( "_ mouseConnection", "processData", Mx, My);
Quando inviamo i dati, usiamo "_MouseConnection" come il nome della connessione e "dati di processo" come il nome del metodo. Ciò significa che proverà a chiamare processData (mX, mY)
.
Abbiamo quasi finito. Tutto ciò che resta da fare è gestire l'evento di stato. L'oggetto LocalConnection invia eventi di stato; in questo progetto non useremo gli eventi; tuttavia, se non li ascoltiamo, riceveremo errori come questo: 'Errore n. 2044: StatusEvent non gestito :. livello = errore, il codice ='
Abbiamo già importato l'evento nel passaggio 5, quindi prima aggiungeremo un listener di eventi per un evento di stato nella funzione di costruzione:
funzione pubblica Sending () stage.addEventListener (Event.ENTER_FRAME, mainLoop, false, 0, true); localConnection.addEventListener (StatusEvent.STATUS, onStatus);
Ora abbiamo bisogno di creare una funzione vuota per rispondere all'evento. La funzione è chiamata 'OnStatus'.
funzione privata onStatus (e: StatusEvent): void ;
Nella Sezione 1, abbiamo imparato come utilizzare la classe LocalConnection per inviare informazioni, tramite una connessione, a un altro file flash. Ecco il nostro file AS finito per la Sezione 1:
package import flash.display.MovieClip; import flash.events.Event; import flash.events.StatusEvent; import flash.events.MouseEvent; import flash.net.LocalConnection; public class L'invio estende MovieClip private var localConnection: LocalConnection = new LocalConnection (); private var mX: Number; private var mY: Number; funzione pubblica Sending () stage.addEventListener (Event.ENTER_FRAME, mainLoop, false, 0, true); localConnection.addEventListener (StatusEvent.STATUS, onStatus); funzione privata mainLoop (e: Event): void mX = mouseX; mY = mouseY; LocalConnection.send ( "_ mouseConnection", "processData", Mx, My); funzione privata onStatus (e: StatusEvent): void ;
Innanzitutto, crea un nuovo file ActionScript 3.0.
Quindi ridimensiona il file a 600 px x 250 px.
Come prima, questo passaggio non è necessario per la funzionalità, ma più per l'estetica. Aggiungi la tua immagine allo stage e poi blocca il suo livello.
Ora dobbiamo creare un oggetto per rispecchiare il puntatore del mouse. Sarà dato lo stesso X e Y valori come puntatore del mouse nell'altro file tramite ActionScript.
In questo esempio sto usando un'icona di una matita (per gentile concessione di WeFunction). Importa l'icona sullo stage, nel suo stesso livello, quindi convertila in MovieClip e assegnagli un nome di istanza cursor_mc.
Per impostazione predefinita, il punto di registrazione (la croce, non il cerchio) si trova nell'angolo in alto a sinistra. Ciò significa che quando completeremo il progetto, la matita sarà leggermente fuori dalla posizione del mouse. Per correggere, fai doppio clic sulla matita e riallineala in modo che la fine della matita si trovi sul punto di registrazione.
Come nella prima parte, salva il tuo FLA come Receiving.fla e quindi creare un file AS vuoto. Salva questo file nella stessa cartella del tuo FLA e chiamalo Receiving.as.
Quindi torna indietro e collega la classe del documento al FLA.
Aggiungi un pacchetto vuoto, una classe e una funzione di costruzione al tuo file AS.
package public class Receiving estende MovieClip public function Receiving ()
Proprio come prima, importa tutte le classi di cui avremo bisogno.
package import flash.display.MovieClip; import flash.events.Event; import flash.events.StatusEvent; import flash.net.LocalConnection; public class Receiving estende MovieClip public function Receiving ()
Ora siamo pronti per iniziare a scrivere il codice per ricevere le informazioni dalla connessione locale. Ecco cosa dobbiamo fare:
Dichiarare un'istanza della classe Local Connection è la stessa di prima:
private var localConnection: LocalConnection = new LocalConnection ();
Quindi dobbiamo connetterci alla connessione che abbiamo creato quando abbiamo inviato i dati dall'altro file.
LocalConnection.connect ( "_ connectionName");
Ora impostiamo il client. Il client indica l'oggetto su cui vengono chiamate le funzioni. Normalmente è impostato su Questo.
localConnection.client = this;
Infine, dobbiamo creare una funzione vuota che riceverà i dati attraverso i suoi argomenti.
public function methodName (variable1: type, variable2: type ...): void ;
Ora che sappiamo come ricevere informazioni con una connessione locale, possiamo iniziare a scrivere lo script. Prima dichiari una nuova istanza LocalConnection. Inseriscilo prima della funzione di costruzione nella classe.
private var localConnection: LocalConnection = new LocalConnection ();
Quindi, nella funzione di costruzione, connettersi alla connessione locale e impostare il proprio client:
funzione pubblica Receiving () localConnection.connect ("_ mouseConnection"); localConnection.client = this;
(Si noti che ci stiamo connettendo a una connessione locale con lo stesso ID utilizzato nel file di invio.)
Quando le informazioni sono state inviate dal file di invio, è stata nominata una funzione o un metodo di ricezione. In questo progetto, ho usato la funzione dati di processo(). La seguente funzione riceve il X e Y coordinate come argomenti e quindi li usa per impostare la posizione della matita.
funzione pubblica processData (mX: Number, mY: Number) cursor_mc.x = mX; cursor_mc.y = mY;
Questa funzione deve essere a pubblico funzione in modo che sia possibile accedervi tramite la connessione locale.
Come per la sezione 1, poiché stiamo utilizzando una connessione locale, dovremo gestire gli eventi di stato. L'evento è già stato importato nel passaggio 16, quindi ora è necessario aggiungere un listener di eventi per gli eventi. Aggiungiamo una linea alla funzione di costruzione:
funzione pubblica Receiving () localConnection.connect ("_ mouseConnection"); localConnection.client = this; localConnection.addEventListener (StatusEvent.STATUS, onStatus);
Quindi creiamo una funzione vuota per rispondere al listener di eventi:
funzione privata onStatus (e: StatusEvent): void ;
In questa seconda parte abbiamo ricevuto correttamente le informazioni da una connessione locale e l'abbiamo elaborata. Ecco il nostro file AS finito:
package import flash.display.MovieClip; import flash.events.Event; import flash.events.StatusEvent; import flash.net.LocalConnection; public class Receiving estende MovieClip private var localConnection: LocalConnection = new LocalConnection (); funzione pubblica Receiving () localConnection.connect ("_ mouseConnection"); localConnection.client = this; localConnection.addEventListener (StatusEvent.STATUS, onStatus); public function processData (mX: Number, mY: Number) cursor_mc.x = mX; cursor_mc.y = mY; funzione privata onStatus (e: StatusEvent): void ;
In questo tutorial abbiamo imparato come utilizzare la classe LocalConnection. Hai visto come inviare informazioni, ricevere informazioni e anche come gestire gli eventi di stato. Questo metodo viene spesso utilizzato nella pubblicità web quando un inserzionista desidera sincronizzare un annuncio tra due diverse posizioni dell'annuncio su una singola pagina web. Questo stesso principio può essere facilmente sviluppato per includere comunicazioni bidirezionali tra due file.
Grazie per aver letto questo tutorial; Spero ti sia piaciuto!