L’oggetto LocalConnection
L’oggetto LocalConnection è una nuovafunzionalità di FMX e consente a due swf di comunicaretra di loro.
In poche parole, un filmato può richiamare funzionidefinite in un altro filmato, e come al solito leapplicazioni sono davvero tante, tutto sta nel fareaffidamento alla propria inventiva.
E’ possibile per esempio creare un swf nascostocontenente tutte le funzioni condivisibili da altri swf, unasorta di libreria di funzioni, che potrebbero essereinnescate dai vari swf caricati.
Per poter utilizzare correttamente questafunzionalità, i protagonisti devono essere duefilmati, uno ricevente ed uno trasmittente.
Il filmato ricevente conterrà la definizione dellafunzione, mentre quello trasmittente conterrà la rigadi chiamata.
Esaminiamo i passaggi da effettuare nei due filmati.
Nel filmato ricevente bisogna seguire questi passaggi:
1. Creazione di un oggetto Local Connection
2. Definzione delle funzioni che verranno richiamate daifilmati trasmittenti
3. Invocazione del metodo dell’oggetto LocalConnection, connet(“identificativo delricevente”), per identificare il filmato ricevente.Questo sarà il nome con cui i filmati trasmittentirichiameranno il filmato che contiene le funzioni.
Una notazione importante è quella dell’ordinecon cui si definiscono tutti i passaggi nel filmatoricevente.
E’ importante dopo aver istanziato la classe LocalConnection, definire le funzioni prima di connettersi.
Nel filmato trasmittente i passaggi sono ancora piùsemplici:
1. Creazione di un oggetto Local Connection
2. Invocazione del metodo dell’oggetto LocalConnection, send(“nomeRicevente”,“funzione” , parametri)
3. Eventuale chiusura della connessione ed eliminazionedell’oggetto Local Connection creato.
Alcune notazioni importanti: i primi due parametri del metodosend() devono essere inseriti tra virgolette, mentre iparametri inviati al filmato ricevente (terzo parametro delmetodo send) possono essere anche più di uno, e devonoessere separati da una virgola.
Infine bisogna stare attenti all’ordine di caricamentodei filmati.
E’ possibile inserire nel filmato trasmittente unevento onEnterFrame che richiami continuamente una funzioneoppure scrivere la riga di chiamata in un pulsante, in questocaso l’ordine di caricamento degli swf non conta.
Ma se nel filmato trasmittente la riga di chiamata allafunzione viene eseguita una sola volta allora occorrecaricare prima il filmato ricevente in modo da averegià la definizione della funzione caricata, qundiaprire il filmato trasmittente.
Nel file ricevente del progetto allegato, il codice sipresenta in questo modo:
lc = new LocalConnection ();//lc.onCreateBox = function (numBoxes) {var i = -1;while (++i < numBoxes) {var newName = "text_" + i + "_mc";_root.attachMovie ("dynamicBox" , newName, i + 1);_root[newName]._x = 100;_root[newName]._y = _root[newName]._height + (i * _root.space);}};lc.onReceivedText = function (boxNum, inputText) {_root["text_" + boxNum + "_mc"].text_txt.text = inputText;};//lc.connect ("receiver"); La comprensione non dovrebbe essere difficile, vieneistanziata la classe Local Connection quindi definite duefunzioni che verranno chiamate dal filmato trasmittente edinfine definita la connessione.
Nel file trasmittente invece il codice si presenta in questomodo:
lc = new LocalConnection ();//lc.send ("receiver" , "onCreateBox" , labels.length);this[newName][inputNewName].input_txt.onChanged = function () {_root.lc.send ("receiver" , "onReceivedText" , this.path, this.text);};
Anche in questo caso non si dovrebbero incontraredifficoltà, l’unica cosa da esaminare èl’evento onChanged della classe TextField.
In questo caso ad ogni casella di testo input_txt creata,viene assegnata all’evento onChanged una funzione sicallback.
L’evento si verifica ogni volta che la casella vienemodifiata, quindi ogni volta che si inserisce un carattere olo si elimina, e quindi al verificarsi di questo evento vieneinvocata la funzione onReceivedText presente nell’swfricevente.
- Articolo precedente L'easing (la decelerazione)
- Articolo successivo Action script e interazione con XML
