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

tag abilitati: <code> </code> | <a href=""> </a> | <b> </b> | <i> </i>
DoZ
8 Ottobre 2007 alle 11:56 am
Io che lavoro ancora con FlashMX mi sono trovato con lo stesso problema, e ho risolto creando una variabile di controllo. L’ho scritto qua:
http://www.dozarte.com/wordpress/2007/07/06/verificare-il-livello-gerarchico-di-un-swf/
Ciao!
Adriano
15 Ottobre 2007 alle 18:35 pm
Ragazzi occhio perchè questa riga: _root.carica._lockroot=true deve finire con “;” ovvero: _root.carica._lockroot=true;
Julius
16 Ottobre 2007 alle 9:10 am
vero
volare
3 Novembre 2007 alle 20:32 pm
Non ci ho capito nulla!:-(
Peccato perchè mi interessava!
Ma (tra le tante domande ne scolgo una)perchè mettiamo il nome istanza”box” se poi non la richiamiamo mai?!
Julius
4 Novembre 2007 alle 15:28 pm
Non era box ma carica avevo sbagliato a scrivere =P
j.
7 Novembre 2007 alle 10:42 am
se ti mando i filess c’hai voglia di scrivermelo giusto ?
Una pizza e una birra quando passo dalle tue parti ! eheh
j.
9 Novembre 2007 alle 11:15 am
…. una pizza e due birre !
j.
12 Novembre 2007 alle 19:11 pm
…. disperato!
una pizza e una cassa di birra !
Julius
12 Novembre 2007 alle 21:46 pm
Ragazzi non è difficile, mi spiace forse ho scritto male l’articolo?
Cosa non avete capito di preciso?
j.
13 Novembre 2007 alle 12:09 pm
scusa se ti faccio impazzire ….
allora che un movie principale che con un “bottoncino” dalla scena1 passa alla scena 2 e sull’ultimo frame della s2 mi deve caricare un altro movie sul “livello 2″ …. ho fatto quello che dici qua sopra ma non va!
penso sia una cosa banalissima, anzi ne sono sicuro, ma cisto perdendo il sonno!
ciao e sempre grazie x la pazienza!
J.
Julius
13 Novembre 2007 alle 13:02 pm
Con questo articolo non centra niente il tuo problema..
leggi questo articolo Le Scene
ciao
davide
8 Marzo 2008 alle 14:14 pm
julius sbaglio sicuramente qualcosa …..
io ho un SWF principale che si chiama SPAGO nel quale ho il MC che si chiama CENTRO e dove voglio caricare DETTAGLI è la root di DETTAGLI che deve rimanere bloccata.
ma non ci riesco dove sbaglio? ti scrivo il codice che ho inserito:
loadMovie("DETTAGLI.swf",_root.CENTRO);_root.CENTRO._lockroot=true;
…. aiuuutoooooo !!
Julius
8 Marzo 2008 alle 14:32 pm
Il problema è che non viene caricato? viene caricato male non bloccando la root e i percorsi non sono corretti?
davide
8 Marzo 2008 alle 14:46 pm
viene caricato ma credo che rimanga il problema del blocco della root del DETTAGLI.swf
(DETTAGLI.swf sarebbe l’SWF principale di “zoom_pan_gallery”)
potrebbe essere un problema a parte?
intanto ti ringrazio per la grande disponibilità
ciao
davide
8 Marzo 2008 alle 14:49 pm
ok, ok
FUNZIONA ……
grazie MIlle!!
Julius
8 Marzo 2008 alle 14:52 pm
figurati ciao
davide
19 Aprile 2008 alle 13:17 pm
caro Julius ….
con tutta la buona volontà ma qui ci vuole un file di esempio per noi poveri mortali ….
…….. e se lo faresti con l’ image_scroller ……….
cmq GRAZIE!!!
Ananda
30 Maggio 2008 alle 12:27 pm
ciao Julius, grazie ti sei spiegato benissimo in questo articolo ed io ho risolto almeno un problema iniziale nel sito che sto facendo. Ma avrei bisogno di un aiuto. è la prima volta che scrivo in un blog, perchè in genere riesco a risolvere tutto leggendo le domande degli altri e le relative risposte. Dunque: io ho un SWF principale che carica un secondo SWF che ne carica un terzo. Per riuscire a fare questo ho messo il comando _lockroot nel primo SWF ed è tutto OK. Ora dopo che ha caricato tutto io avrei bisogno di riattivare quella prima root, poichè, per chiudere il secondo SWF ho messo su quest’ultimo un pulsane con il comando
on (release) {_root.popup.unloadMovie();} facendo riferimento al nome della root posta sul primo SWF. Prima di aggiungere la lockroot sul primo SWF questo comando funzionava alla perfezione e mi consentiva di chiudere il secondo SWF. Dopo non ha più funzionato..
è possibile risolvere in qualche modo la cosa?
Ti ringrazio in anticipo, se riesci ad aiutarmi ed in ogni caso.
ciao Ananda
Ananda
30 Maggio 2008 alle 12:56 pm
ciao, ehi… intanto aspettando una tua risposta ho fatto dei tentativi ed ho risolto:
ho semplicemente cancellato il nome della root, lasciando solo:
on (release) {_root.unloadMovie();}
e mi funziona!!!
Magia.
Grazie in ogni caso, per l’appunto.
Immagino che per voi genietti queste magie siano tutte spiegabili.
Ananda
Julius
30 Maggio 2008 alle 20:33 pm
@Ananda ottimo
Gigio
6 Giugno 2008 alle 19:25 pm
ciao Julius
siccome non riesco a far funzionare la funzione lockroot, volevo chiederti se conosci qualche tutorial Video che spiega passo passo come fare.
Ormai e 2 settimane che provo e riprovo e non so piu che fare.
Grazie
Julius
6 Giugno 2008 alle 20:04 pm
E’ semplice vi è un loadMovie e un _lookroot come scritto nell’articolo
spiega meglio il tuo problema…
Gigio
8 Giugno 2008 alle 12:01 pm
ok, adesso provo a raccontarti i passaggi.
titolo: Insedrimento MP3 (tipo quello del tuo tutorial) da swf estrno.
Premetto che la funzione non la uso quando mi trovo sulla timeline principale ma bensi’ dentro un movieclip. (lo chiamero’ 1)
1.Mi tovo dentro il movieclip 1 dove ho diversi livelli.
2. Creo un nuovo livello (pippo) e genero un fotogramma vuoto.
3. Seleziono il fotogramma vuoto e creo un simbolo movieclip e lo chiamo A.
4. Dentro A creo un altro movieclip e lo chiamo B
5. Inserisco quindi il SWF esterno in B attraverso la funzione “comportamenti” detta anche Behaviors.
6. ora in B avro il codice Actionscript:
//load Movie Behavior
if(this == Number(this)){
loadMovieNum(”ipodplayer_update2.swf”,this);
} else {
this.loadMovie(”ipodplayer_update2.swf”);
}
//End Behavior
7. Adesso vado nel Movieclip A, trascino il movieclip B dentro A prendendolo dalla libreria e metto questo codice actionscipt:
_root.mc_B //la _root è riferita a B
8.Al movieclip A do nome istanza “mc_B”
8. Ora vado nel movieclip 1 che ho generato all’inizio (vedi punto 1)
e trascino dentro il frame “pippo” il movieclip A. Adesso inserisco il codice actionscipt:
loadMovie(”ipodplayer_update2.swf”,_root.carica); //_root riferita a A
_root.carica._lockroot=true; //specifico che la _root è bloccata dal clip carica quindi riferita a B
9. Infine al Frame pippo do il nome istanza “carica”.
Quando faccio il preview, l’mp3 appare ma mostra degli evidenti errori di caricamento che non vangono pero’ segnalati dalla finestra errori.
Spero che la spiegazione sia utile per capire dove sbaglio.
Spero di risolvere il problema anche perche’ questa funzione e molto utile a non appesantire troppo il sito.
Ti ringrazio molto per la tua disponibilita’.
Julius
8 Giugno 2008 alle 16:55 pm
prova a inviare i file sulla mia casella di posta che controllo
fabio
22 Giugno 2008 alle 14:36 pm
ciao julius dopo un millennio dagli esordi ho capito come funzionano tante cose su flash e specie look root ora…
sto rifacendo il sito e in piu’ altri 4… grazie di tutto veramente
fabio
quando ho finito ti mando il link del nuovo sito… speriamo sia migliorato… ghghghghg
ciao a presto
Julius
22 Giugno 2008 alle 15:35 pm
Ottimo
Aldo
25 Luglio 2008 alle 14:22 pm
mitico julius!!!!
mi serviva questo tutorial!!!
thanx