Flash: problemi con unloadmovie

Di: michelino1980 | 26/09/2020 18:39:18
Ho un piccolo problema. Nella scena 1 ho un mc (MC_home) con al suo interno un contenitore che carica un swf esterno con loadmovie("prova.swv","contenitore")
Sempre nella scena 1 ho un altro mc (MC_contatti), io voglio che quando premo questo bottone mivada via tutto quello caricato dal MC_home e mi appaia il nuovo contenuto.
Ho provato con unloadmovie e tutte le possibili alternative che sono riuscito a trovare, ma niente, il contenuto del primo mc mi rimane.
Cosa posso fare??

Risposte



E' veramente una cosa cosi impossibile??

Di: michelino1980 | 26/09/2020 18:39:18


Ciao michelino,
non si capisce bene la procedura che segui...
Hai un movieclip chiamato MC_home, all'interno di questo movieclip ne hai un altro di cui non dici il nome e che serve da segnaposto per caricare un swf esterno.
Hai un altro oggetto che chiami MC_contatti.
Di quale bottone parli?
Se il secondo oggetto di cui parli deve essere cliccabile puoi utilizzare un simbolo di tipo pulsante, oppure un simbolo di tipo movieclip a cui assegni i giusti eventi.
La differenza sta nel codice, infatti se hai un pulsante devi usare un gestore del tipo
on (....) { .... }
se invece hai un movieclip devi usare un gestore del tipo
onClipEvent(....) { .... }
Ora proverò a leggerti nel pensiero:
Tu hai un movieclip chiamato MC_contatti e dentro questo movieclip hai posizionato un pulsante, cliccando su questo pulsante non viene “scaricato” il contenuto di un altro movieclip che chiami MC_home.
Se lo scenario è questo il tuo problema è nel percorso, infatti un pulsante dentro a un movieclip non può raggiungere direttamente il contenuto di un altro movieclip. Prova a impostare il pulsante in questo modo:
on (Release) {
_root.MC_home.unloadMovie();
}
Se lo scenario è diverso ti prego di fornire una descrizione più dettagliata.
Ciao.

Di: Professore | 26/09/2020 18:39:18


Cia Professore, come veggente non sei per niente male, perchè il mio problema è proprio quello, però non ne vengo a capo.
Ecco il mio caso:
ho un mc chiamato MC_home,istanziato 'home' (che mi fa da voce di menu Home),al suo interno ho posizionato un pulsante che mi carica dentro di un contenitore vuoto (istanziato 'contenitore') un swf esterno 'contenuto.swf', con il seguente codice
on(release){
loadmovie("contenuto.swf","contenitore");
}
Nel momento in cui voglio caricare il contenuto di un'altra voce di menu, esmpio 'Contatti' (MC_contatti) composto allo stesso modo del precedente,non mi sparisce il contenuto del MC_home.
Ho provato anche con il codice che mia hai dato te
on (Release) {
_root.MC_home.unloadMovie();
}
ma non mi funziona, l'unico modo per farlo funzionare è mettere quel codice però invece di inserire MC_home, ho messo il nome dell'istanza del mc cioè 'home'
on (Release) {
_root.home.unloadMovie();
}
Solamente a questo punto invece di cancellare solo il contenuto caricato dall' swf esterno, mi cancella praticamente tutto il mc, compreso la voce di menu.
Come ci esco da questo problema?????????

Di: michelino1980 | 26/09/2020 18:39:18


Ciao michelino,
è del tutto naturale che
on (Release) {
_root.home.unloadMovie();
}
ti cancelli del tutto il movieclip con il nome istanza "home" che si trova sulla _root.
Primo: una precisazione...
i nomi istanza e i nomi dei simbili sono due cose diverse, quando da ActionScript ci riferiamo a un movieclip chiamandolo per nome ci riferiamo sempre al nome dell'istanza, non al nome del simbolo nella libreria.
Secondo: una soluzione...
Per cancellare il contenuto di un'istanza chiamata "contenitore" che si trova dentro a un movieclip con nome istanza "home", a sua volta sulla _root dobbiamo scrivere:
on (Release) {
_root.home.contenitore.unloadMovie();
}
Questo rappresenta il percorso completo per arrivare all'istanza che vogliamo “scaricare”...
_root.home.contenitore significa “Partendo dalla _root, rintraccia l'istanza chiamata home, al suo interno rintraccia un'istanza chiamata contenitore”. A seguire puoi aggiungere il comando che ti pare, in questo caso unloadMovie(), ma anche play(), stop(), gotoAndPlay(), ecc...
Terzo: un consiglio...
Se non devi mai visualizzare due pagine contemporaneamente puoi evitare un sacco di azioni operando come segue:
Crea tutte le istanze che vuoi per i pulsanti, senza nessun contenitore al loro interno.
Crea una sola istanza di contenitore e posizionala sulla _root.
Ogni pulsante avrà l'azione:
on (Release) {
_root.contenitore.loadMovie(....quello che ti pare....);
}
In questo modo tutti i contenuti saranno caricati dentro la stessa clip e, di volta in volta, andranno a sostituire il contenuto precedente, quindi non sarà necessario ricorrere a unloadMovie.
Ciao...

Di: Professore | 26/09/2020 18:39:18


Non so proprio come ringraziarti mi hai risolto un'altro problema, e con il terzo consiglio mi hai semplificato veramente TANTO il lavoro. Almeno non ho più 10 contenitori a giro per lo stage.
GRAZIE 1000

Di: michelino1980 | 26/09/2020 18:40:18