La classe LocalConnection ci permette di fare comunicare 2 swf separati, inviando e ricevendo variabili invocando metodi e funzioni da un filmato all’ altro.
La classe LocalConnection ci viene in aiuto, pensiamo ad un menu posizionato nel top della pagina che dovrebbe, senza aggiornare o cambiare la pagina, comunicare con un swf posizionato in un punto diverso cosi da poter per esempio cambiare immagini o sezioni.
La base della classe LocalConnection è la seguente:
- Swf ricevente
1) Creo un’ istanza della classe LocalConnection
2) Definisco un metodo o i metodi che verrano richiamati da altro o altri swf.
3) Invoco il metodo connect(“id”), dove l’ id è nome univoco che permetterà il collegamento tra i 2 swf
- Swf che invia i dati
1) Creo un’ istanza della classe LocalConnection
2) Utilizzo il metodo send della classe LocalConnection: send(“idRicevente”, “funzione” , parametri) dove:
– idRicevente è l’ id che abbiamo utilizzato per il metodo connect dell’ swf ricevente
– funzione è il metodo invocato per comunicare con il filmato ricevente
– parametri sono una serie di parametri che invieremo
Andiamo ad analizzare il codice
Codice per l’swf ricevente
// creo l' istanza della classe LocalConnection
var receiving_lc:LocalConnection = new LocalConnection();
// inizializzo un metodo stampa: questo metodo sarà chiamato dall' altro swf
receiving_lc.stampa = function(parametro:Number) {
// stampo il parametro inviato
trace("ho ricevuto: "+parametro);
};
receiving_lc.connect("idname");
Codice per l’swf che invia i dati
// creo l' istanza della classe LocalConnection
var sending_lc:LocalConnection = new LocalConnection();
// utilizzo il metodo send per invocare il metodo stampa passando i secondi del sistema
sending_lc.send("idname", "stampa", new Date().getSeconds());
15 Commenti
Ciao Julius, volevo farti una piccola domandi sulle local connection…
Ho collegato due file swf con una local connection. Praticamente uno dei 2 file non parte fino a che l’atro non ha raggiunto un certo punto. Funziona bene, ma su IE6 quando faccio il refresh(F5) della pagina, il secondo swf non parte. Il problema non si verifica su Firefox. Perchèèèèèèèè??????????
Sapresti aiutarmi…
Le linee di codice sono inserite su frame diversi? ovvero vengono richiamati nello stesso tempo o no?
Sulla compatibilità tra IE6 e FF non saprei dirti, mi sembra molto strano…
In pratica al frame 50 del mio file “inviante” ho lo script che richiama la connessione e la funzione Play, mentre al primo frame del file “ricevente” ho uno stop e lo script che riceve la connessione. Però su IE6 se faccio il refresh non funziona. Strano!!!
Ciao Julius,
ho notato che per fa funzionare la cosa i due swf devono essere aperti distintamente.
Ad esempio se dal sender apro l’swf listener e poi gli mando i dati non funziona…
Tipo in questo modo:
mybtn.onPress = function(){
loadMovieNum(“listener.swf”,1);
sending_lc.send(“idname”, “stampa”, string_to_send);
}
Puoi dirmi se sbaglio io o se c’è un altro modo? Grazie!!
Se non erro devono essere aperti tutti è due contemporaneamente…
interessante…in quest’esempio il listener “stampa” cio’ che riceve dal sender… ma se io volessi per esempio che al click di un pulsante o movimento x o y di un clip del sender accada qualcosa nel listener …. ??
e’ importante definire l’istanza nel sender…ovvero
var sending_lc:LocalConnection = new LocalConnection();
var myArray:Array= new Array(1,2,3,4);
pero’ poi per inviare il comando?
esempio se io voglio che nel sender…se esemp _root.onEnterFrame = function if(_root._xmouse<50) quindi il mouse e’ ad una certa posizione …. faccia qualcosa l’altro swf….come posso fare ?
Inoltre vedo che nel listener va messa sicuro la funzione local Connection
var receiving_lc:LocalConnection = new LocalConnection();
pero’ poi la funzione per eseguire il comando ?
Nell’articolo in “Codice per l’swf ricevente” trovi tutti i commenti necessari per capire le azioni
Il “comando” in questo caso sta sul pulsante che invia il contenuto del campo di testo al swf esterno
grazie per la risposta Julius …ovvero in questa parte di codice ?
receiving_lc.stampa = function(parametro:Number) {
// stampo il parametro inviato
trace(“ho ricevuto: “+parametro);
};
receiving_lc.connect(“idname”);
ciao Julius, ho seguito i suggerimenti del tutorial per far comunicare gli swf e il tutto funziona perfettamente su firefox ma non c’è verso di farlo funzionare su internet explorer… sai darmi qualche suggerimento, a nessuno è mai successo???
a me succedeva questo in locale….provalo on line che e’ meglio.
eh no… è una cosa che mi succede online… non comunicano più, non so come fare!!!!! non hai suggerimenti?
Ciao,
ho visto che c’erano dei problemi sulla compatibilità nei vari browser;
purtroppo la riscontro ora con l’uscita di explorer 8, qualcuno sa se c’è la possibilità di risolvere il problema?
Ciao a tutti
Liberi del darmi del chiucchiolo funziona perfettamente anche su explorer 8.
ciao ciao
Ciao ho un problema con as3 non riesco ad assegnare due pulsanti sullo stesso stage so che c’e’ la soluzione ma l’unoca che ho trovato sino ad adesso e ritornare a as2 o c’e’ qualcuno che puo aiutarmi?
Ciao ho un problemino
ho creato una maschera ad un immagine e solo che vorrei si attivasse solo al passaggio del mouse e contenesse un link ad una pagina html….
e possibile farlo?
potresti darmi una mano