come posso scaricare un clip preso dalla libreria con attachmovie? ho provato con unloadmovie ma mi scarica tutti i filmati non solo quello caricato con attachmovie
come posso scaricare un clip preso dalla libreria con attachmovie? ho provato con unloadmovie ma mi scarica tutti i filmati non solo quello caricato con attachmovie
attenzione, ti confondi con i comandi... unLoadMovie è un comando specifico, che scarica i filmati caricati dall'esterno in un determinato MovieClip, quello che serve a te è invece removeMovieClip, assegnato direttamente al clip che si vuole eliminare dallo stage (ma che rimarrà comunque in libreria)
la sintassi corretta è myMovieClip.removeMovieClip(); dove al posto del testo in corsivo ci va il nome del clip che vuoi eliminare
ho provato pure con removeMovieClip(); solo che il clip nella libreria non ha un istanza. come faccio ad assegnare un istanza ad un clip che sta nella libreria per poi fare istanza.removeMovieClip();
metto il codice per farvedere cosa ho fatto
distanza = 370;
livello = 100;
for (l=1; l<numerofoto+1; l++) {
livello++;
this.attachMovie("clip", "clip"+livello, livello);
_parent.contenitore["clip"+livello]._x = 30*l+(-30)+40;
_parent.contenitore["clip"+livello]._y = 0+distanza+40;
_parent.contenitore["clip"+livello].mytext = livello-100;
_parent.contenitore["clip"+livello].pos = myXML.childNodes[0].childNodes[livello-101].attributes.pos;
_parent.contenitore["clip"+livello].nome = myXML.childNodes[0].childNodes[livello-101].attributes.nome;
sono tutti quei "clip" che dovrei scaricare
i clip sullo stage hanno un nome di istanza ed è quello che devi usare per eliminarli con removeMovieClip... nel tuo caso hai una serie di clip con nomi sequenziali, quindi clip1, clip2, clip3, ecc.., perciò dovresti fare un ciclo esattamente come quello che hai postato, ma questa volta concentrando il codice sulla sola rimozione dei clip
for (l=1; l<numerofoto+1; l++) {
livello++;
_parent.contenitore["clip"+livello].removeMovieClip();
}
ora il problema è capire dove mettere questo codice, visto che da quello che hai postato, mi pare che il ciclo sia compreso dentro un parsing XML
praticamente è uan galleria di foto con flie xml strutturata cosi:
primo frame:
stop();
fscommand("allowscale",false);
fscommand("showmenu",false);
// preparazione al caricamento file esterno xml
myXML = new XML();
// ignoro gli spazi bianchi della formattazione del file xml
myXML.ignoreWhite = true;
// carico il file
myXML.load("galleriafoto.xml");
// prima di proseguire verifico che tutto il file sia caricato
myXML.onLoad = function (){
trace("test = "+myXML.firstChild.nodeName+" ... XML caricato");
gotoAndStop(2);
}
secondo frame:
stop();
// variabili dinamiche
numerofoto = myXML.childNodes[0].childNodes.length;
quadri = myXML.childNodes[0].attributes.quadri;
passo = myXML.childNodes[0].attributes.passo;
// posizionamento quadri vuoti
distanza = 0;
livello = 1;
for (l=1; l<quadri+1; l++){
livello++
_root.attachMovie("quadro","quadro"+livello, livello);
_root["quadro"+livello]._x = 30*l+(-30)+10;
_root["quadro"+livello]._y = 0+distanza+40;
if (l == passo){
distanza += 30;
l = 0;
quadri -= passo;
}
}
// posizionamento clip, numeri e link per le immagini
distanza = 0
livello = 100
for (l=1; l<numerofoto+1; l++) {
livello++;
_root.attachMovie("clip", "clip"+livello, livello);
_root["clip"+livello]._x = 30*l+(-30)+10;
_root["clip"+livello]._y = 0+distanza+40;
_root["clip"+livello].mytext = livello-100;
_root["clip"+livello].pos = myXML.childNodes[0].childNodes[livello-101].attributes.pos;
_root["clip"+livello].nome = myXML.childNodes[0].childNodes[livello-101].attributes.nome;
if (l == passo) {
distanza += 30;
l = 0;
numerofoto -= passo;
}
}
e al terzo frame, raggiungibile tramite click di un pulsante, dovrei mettere il codice per scaricare il tutto.
qunado torno in ufficio domani provo come hai detto tu. ciao e grazie mille per le risposte![]()
potresti mettere lo script che ti ha postato and in una funzione e richiamare la funzione quando ti serve
con una cosa del genere
function Rimuovi(){
for (a=0; a<numerofoto; a++){
_root["clip"+a].removeMovieClip();
};
};
x richiamarla
Rimuovi();
![]()
la verità non è una meretrice che si getta al collo di chi non la vuole ma anzi essa è dotata di una così altera bellezza che anche chi sacrifica tutto per ottenerla non è sicuro di averla raggiunta !
non riesco a farlo funzionare![]()
![]()
![]()
il codice sarebbe corretto, ma il limite del ciclio "numerofoto", nel codice del frame precedente viene ridotto fino a 0, perciò il codice che elimina i movieclip "colpisce" a vuoto
per lasciare il codice funzionante che già hai, ti consiglio di creare una variabile globale _global.clips a cui assegni sempre nel frame 2 il valore di "numerofoto" prima che cominci il ciclo, così nel terzo fotogramma il tuo codice diventerà
function Rimuovi(){
for (a=0; a<_global.clips; a++){
_root["clip"+a].removeMovieClip();
};
};
Rimuovi();
cioè nel secondo frame devo mettere
_global.clips = numerofoto; ?
ho provato cosi ma i clip sparicono lo stesso solo alla fine del filmato e no qunao la linea temporale passa sul terzo frame
mmm