Flash: localconnection

Di: Nyo | 26/09/2020 18:57:22
Salve vi scrivo in merito a problema tra dei link fatti in html (o piccoli pulsanti in Flash messi nelle pagine html) che devono aprirmi un frame ben preciso in un clip filmato posizionato in un file swf posizionato in un'altra pagina html che è incorporato su un altro frame.
Spero di essere stato chiaro Nyo.

Risposte



Per far comunicare due swf separati devi usare il comando localconnection.
Es.
File 1(azioni pulsante)
on (press) {
invio = new LocalConnection();
invio.send("connessione","metodo",5);
delete invio;
}
File 2(azioni da inserire sul 1 frame della root)
ricevo = new LocalConnection();
ricevo.metodo = function(x) {
this.tuo_mc.gotoAndStop(x);
};
ricevo.connect("connessione");
Fammi sapere.

Di: goku | 26/09/2020 18:58:22


Non ho capito bene cosa devo scrivere all’interno dello script, ti spiego meglio:
file 1
è un pulsante flash es.personale.swf che si trova in una pagina html situata in un frame.
il file 2
si chiama "menu_sx.swf" sta in una pagina html "menu_home.htm" che si trova in un frame html diverso con in target "menu".
il file Flash "menu_sx.swf" ha un unico keyframe con un movie clip con target "nav" e io devo andare a seconda se clicco sul pulsante (es.personale.swf devo andare al keyframe 40 del clip filmato nav)e altri pulsanti (es.company.swf al keyframe 60 del clip filmato nav)
Spero di essere stato molto più chiaro perché non so come utilizzare lo script che mi hai gentilmente fornito.
Ciao

Di: Nyo | 26/09/2020 18:58:22


Il comando localconnection serve per far comunicare 2 swf distinti che si trovano nella stessa pagina html.
Se ho capito bene tu hai una pagina html composta da 2 frame, ognuno dei quali contiene un swf.
Se è così non devi far altro che copiare ed incollare lo script che ti ho postato nei rispettivi file di flash, ovviamente devi cambiare il target (sostituisci "tuo_mc" con "nav") e il numero di frame interessato (nel mio esempio 5).

Di: goku | 26/09/2020 18:58:22


nel file 1 scrivo così:
on (press) {
invio = new LocalConnection();
invio.send("menu_sx.swf", "menu", 25);
delete invio;
}
nel file 2 :
ricevo = new LocalConnection();
ricevo.metodo = function(x) {
this.nav.gotoAndStop(x);
};
ricevo.connect("connessione");
ma non funziona dove sbaglio,
considerando che con il file 2 devono comunicare piu file swf come il primo ma devono andare a key frame diversi

Di: Nyo | 26/09/2020 18:58:22


Scusami, ma mi è sembrato di essere stato chiaro,
nell'ultimo post ti ho detto le due cose che dovevi modificare in base al tuo movie, e cioè il target e il numero di frame, perché hai scritto questo:
invio.send("menu_sx.swf", "menu", 25);
invece di:
invio.send("connessione","metodo",25);
???????

Di: goku | 26/09/2020 18:58:22


Ciao, scusami lo so che sei stato chiaro ma come mi hai scritto avevo provato e non funzionava e allora credevo che potesse essere scritto in altro modo; perché non capico come il file 1 (personale.swf) cap**se che dovesse comunicare con il file2 (menu_sx.swf) nel frame (menu) della pagina html. Il target del movie clip (nav) e il fotogramma (25) mi erano chiari dove inserirli!
Spero di non farti perdere la pazienza e ti ringrazio anticipatamente per la tua disponibilità.
Ciao

Di: Nyo | 26/09/2020 18:58:22


Scusami ma sono stato un pò impegnato,
allora, nel codice che ti ho postato credo ci sia un errore,
correggi:
this.nav.gotoAndStop(x);
con
_root.nav.gotoAndStop(x);
praticamente devi sostituire solo il "this" con "_root", ho fatto un test e funziona perfettamente, questo test è stato fatto con una pagina HTML, composta da 2 frame, in uno il file swf con il pulsante, nell'altro il file swf con il MC.
Se apportata questa modifica, ancora non ti funziona, invierò i sorgenti a Pablito, lui penserà al resto.
Ciao e scusa il tono del precedente post.

Di: goku | 26/09/2020 18:59:22
Di: Pablito | 26/09/2020 18:01:23


Ciao, finalmente sono riuscito a farlo funzionare grazie al tuoi sorgenti ma non ancora ad ottenere quello che volevo nel modo giusto. Cerco di capire quali possano essere i problemi e poi ti faccio sapere. Ciao e grazie.

Di: Nyo | 26/09/2020 18:01:23


come faccio a fargli passare una variabile
es. nel pulsante che sta nel filmato c'è questa azione:
on (release) {
gotoAndPlay("link7-d");
section = "3";
getURL("avvisi_home.htm", "link");
}
qiundi lui va al fotogramma che si chiama "link7_d" esegue i fotogrammi e alla fine dell'utimo fotogramma trova queta azione:
if (section == "1") {
gotoAndPlay("transport");
} else if (section == "3") {
gotoAndPlay("canamwest");
} else if (section == "4") {
gotoAndPlay("canameast");
} else if (section == "2") {
gotoAndPlay("warehousing");
} else if (section == "5") {
gotoAndPlay("link3");
} else if (section == "6") {
gotoAndPlay("link6");
} else if (section == "7") {
gotoAndPlay("link7");
} else if (section == "8") {
gotoAndPlay("link8");
} else if (section == "9") {
gotoAndPlay("link9");
}
quindi con la variabile passata dal pulsante es: section = "3"; lui si sposta al target "canamwest" (e carica l'atra azione get url)
io con il localconnection che stiamo utilizzando
al posto del target lo faccio andare al fotogramma dove sta il target esempio 121 e sul quel fotogramma associo l'azione play e fin qui tutto ok ma dovrei fargli passare anche la variabile section = "3"; in modo tale che scorrendo e arrivando all'ultimo fotogramma lui trovi l' azione che lo sposti in un'altro fotogramma dopo aver eseguito il movimento al frame 121
ciao grazie

Di: Nyo | 26/09/2020 18:02:23


Innanzitutto non c'è bisgno di associare l'azione play() sul frame passato da localconnection, basta cambiare il gotoAndStop(x); con un gotAndPlay(x); nello script postato.
Detto questo, non mi è molto chiaro il tutto, comunque se il problema è passare 2 variabili anziché 1 fai così:
File 1(azioni pulsante)
on (press) {
invio = new LocalConnection();
invio.send("connessione","metodo",n°frame,tua_variabile);
delete invio;
}
File 2(azioni da inserire sul 1 frame della root)
ricevo = new LocalConnection();
ricevo.metodo = function(x,y) {
_root.tuo_mc.gotoAndPlay(x);
_root.section=y;
};
ricevo.connect("connessione");
Ovviamente nella prima parte dello script devi inserire i giusti valori.

Di: goku | 26/09/2020 18:02:23