Flash: Preload su contenitore swf

Di: dar_pri | 26/09/2020 18:26:16
Ciao,ho un dubbio...uno dei tanti aime'...
Io ho costruito un preloader che funziona benissimo, quindi il problema non e' questo.Piuttosto mi chiedo, come mai se carico all'interno di un contenitore un swf il preload non agisce piu'...cioe', se vado a testare la scena da sola usando il simulate download funziona regolarmente...mentre se la carico (come ovvio) esternamente, la barra e il txt dinamici sono praticamente nulli. Premetto che lo script di caricamento
lo vado a mettere solo negli swf esterni...non e' logico fare cosi'? Scusate se ritorno sull argomento preloader ma non sono riuscito cercando gli altri post a chiarirmi l idea
su questa specifica.Ciao

Risposte



Ciao Dar,
il problema può essere causato solo da una cosa:
utilizzi la parola chiave _root nello script del preload.
Vediamo perché:
_root indica la “radice” ovvero il livello più basso di un filmato Flash.
Quando un filmato è da solo, la parola _root indica il filmato stesso, in quanto lui è il contenitore principale.
Quando un filmato ne carica un altro avviene che la la parola _root si riferisce al filmato che carica (anche se la usi dentro al filmato che viene caricato).
Esistono due possibili soluzioni:
Soluzione 1.
Sostituisci la parola chiave _root con un’altra più adeguata.
Non devi usare assolutamente “_root” neanche una volta, altrimenti farai riferimento al filmato che caricherà quello su cui stai lavorando
“this” è un buon candidato se lo script si trova sulla linea temporale principale del tuo filmato.
Prova a cambiare tutti i “_root” in “this” e prova il filmato, se funziona hai finito, altrimenti continua a leggere.
Se il preload è all’interno di un MovieClip, oppure è assegnato ad un MovieClip, la parola magica da usare è “_parent”.
Puntualizzo subito che se uno script si trova sulla linea temporale principale ma è assegnato ad un MovieClip perché hai scritto qualcosa del tipo:
nomeMovieClip.onEnterFrame = ......eccetera.....
Il tuo script è come se fosse dentro alla linea temporale del MovieClip, quindi devi usare _parent.
Se invece lo script si trova annidato sotto diversi livelli di MovieClip (ma non credo che sia il tuo caso) dovrai scrivere _parent tante volte quante sono necessarie per arrivare alla linea principale.
Se per esempio sulla _root hai un MovieClip, all’interno di questo hai un altro MovieClip, all’interno di quest’altro si trova il MovieClip con lo script allora dovrai ripetere tre volte _parent, in questo modo:
_parent._parent._parent.getBytesLoaded()
Fai tutte le prove necessarie, provando il filmato da solo.
Se il preload scritto con i “_parent” o i “this” al posto dei “_root” funziona da solo, funzionerà anche caricato all’interno di un altro filmato.
Se la soluzione non ti soddisfa o hai fatto confusione con i sottolivelli dei vari clip passa alla
Soluzione 2.
lascia tutti gli script come sono ma inserisci questo rigo al primo fotogramma:
_lockroot = true;
Questa istruzione fa in modo che la parola “_root” venga interpretata sempre come se il filmato fosse da solo, anche quando lo carichi all’interno di un altro.
Ha una controindicazione:
Se scrivi “_root” per riferirti al filmato contenitore non ci riuscirai, perché il riferimento a _root è bloccato sul filmato contenuto, quindi solo nel caso in cui tu voglia comandare il filmato contenitore da uno script che si trova nel filmato contenuto, per funzionalità diverse dal preload, dovrai disattivare questa istruzione prima di chiamare _root e riattivarla dopo:
_lockroot = false;
_root.gotoAndStop(2); ///comando per il filmato contenitore
_lockroot = true;

Di: Professore | 26/09/2020 18:27:16


La barra ora finalmente si muove...e non e' un miracolo, anche se a me lo sembra...L unico problema ora lo riscontro con il testo dinamico.A questo punto devo scoprire l inghippo.
Inoltre non ho potuto usare il metodo LOCK poiche' nella linea principale mi riferisco a _root,perche', oltre ad avere contenitore interni o 5 label che mi fungono da ulteriori cose...grazie mille+mille Professore

Di: dar_pri | 26/09/2020 18:27:16


mitico prof!

Di: esse_bi | 26/09/2020 18:28:16