La tua idea è fondamentalmente buona.
L'unica cosa che non mi piace è il "loadMovie" nell'ultimo frame dell'animazione di uscita, ma è una questione di stile, può funzionare ugualmente, ma "concettualmente" dovrebbe essere sempre il main-program ad avere il controllo di tutto e, di conseguenza, decidere il da farsi.
Ti sottopongo due possibili soluzioni, una per implementare il codice che avevo proposto, due per sviluppare la tua idea originale.
Soluzione uno.
nell'ultimo frame del tuo (dei tuoi) movie esterni imposti la variabile terminato = true.
Tale variabile l'avrai preventivamente impostata a FALSE nel 1° frame del movie esterno.
Poniamo che il movieclip dove hai caricato il filmato esterno sia istanziato contenitore
il codice che avevo suggerito andrà modificato così:
codice:
function cambiasezione (sez) {
sezionenuova = sez;
// il test seguente serve x evitare di eseguire la funzione se uno clicca più volte consecutivamente sullo stesso pulsante
if (sezioneattiva != sezionenuova) {
// questo invece x saltare la chiusura se NESSUNA sezione è attiva (tipicamente la prima volta)
if (sezioneattiva != "") {
// qui inserisco i comandi per "lanciare" la clip di "chiusura"...
}
this.onEnterFrame = function () {
// qui eseguo il test per sapere se l'animazione di chiusura è terminata...
if (contenitore.terminato) {
trace("fase di apertura");
sezioneattiva = sezionenuova;
// qui inserisco i comandi per "lanciare" la clip di "apertura"...
delete this.onEnterFrame;
}
}
}
}
Soluzione due.
L'animazione di chiusura di tutti i tuoi movie esterni dovrà essere segnalata da un'etichetta, uguale per tutti i movie, poniamo: chiusura.
Sulla timeline principale ci sarà una variabile (poniamo link) dove i vari pulsanti di sezione memorizzano il nome del movie da caricare.
Il movieclip contenitore sarà istanziato con "contenitore".
Esempio del pulsante CONTACT US:
codice:
on (release) {
link = "contact.swf";
contenitore.gotoAndPlay("chiusura");
}
Nell'ultimo frame di ogni animazione di chiusura (che sia il 30° o il 50° non importa) ci sarà questa istruzione:
codice:
this.loadMovie(_parent.link);
Naturalmente ho presupposto che il movie "contenitore" sia sulla timeline principale e NON annidato dentro un altro clip.