Quante volte vi è capitato di avere problemi a caricare un filmato swf in un altro? Da solo funziona..ma quando lo carico in un altro filmato non da segni di vita!!
Cosa sta succedendo?
Molto semplice, a volte quando richiamiamo degli oggetti in un swf utilizziamo il comando _root per identificare la sua posizione sullo stage riferito a quel progetto.
Quando andiamo a caricare l’swf in un altro, con dei richiami alla _root, quest’ultima non sarà più intesa sul progetto iniziale ma verrà presa in considerazione nell’swf richiamante.
In questo modo avremo degli errori di percorsi dovuti dall’errata scrittura di percorsi, pensiamo solo quando richiamiamo un file esterno, un movie clip nidificato o suoni inlibreria.
Come risolvere? Utilizziamo _lockroot!
È possibile utilizzare _lockroot per specificare il contenuto corretto e non identificare la vera _root nel file swf richiamante.
L’uso di _lockroot deve essere considerato semplicemente una soluzione alternativa per i problemi causati dall’uso di _root.
In pratica non facciamo altro che bloccare (_lock) la _root
Vediamo un esempio:
Abbiamo due swf il primo di nome ALFA e il secondo di nome BETA.
In ALFA richiamo BETA in un clip contenitore di nome istanza carica
In BETA richiamo un clip contenitore di nome istanza mc_beta
_root.mc_beta //la _root è riferita a BETA
Ora richiamo BETA in ALFA
loadMovie("BETA.swf",_root.carica); //_root riferita a ALFA
_root.carica._lockroot=true; //specifico che la _root è bloccata dal clip carica quindi riferita a BETA
Metodo alternativo
Un altro metodo per caricare swf esterni senza perdere i percorsi è utilizzare _level0
ecco un esempio con un clip filmato contenitore di nome istanza box:
loadMovie("filmato.swf", _root.box);
diventa:
loadMovie("filmato.swf", _level0.box);
51 Commenti
fatto