Ciao,
hai ragione anche tu che non sempre il codice è spiegato nel suo funzionamento anche perché spesso il codice è un semplice copia incolla che si trasferisce da un thread all' altro e che spesso solo chi l'ha creato sa come funziona. Comunque provo a spiegarti questo codice qui che ho scritto in maniera simile al preload di immagini per facilitare chi lo ha già studiato:
Per prima cosa sullo stage devi avere
1 movie clip vuoto chiamato 'visibile'
2 bottoni 'avanti'-'indietro'
1 campo testo dinamico chiamato 'msg'
Le prime 3 variabili penso che non siano difficili da capire,
immagini = array che contiene i path dei movi da caricare (galleria di immagini o altro)
nimmagini = è il numero di movie della galleria - 1 perché nell' array il primo elemento è in posizione zero.
num = ci servirà come indice per la galleria.
Cosa succede:
per prima cosa carichiamo sul movie 'visibile ' il primo elemento della galleria (visibile.loadMovie(immagini[0]) ) e qui il codice si blocca fino a quando l' utente non preme il bottone 'avanti'. Alla pressione l'indice della galleria si sposta sulla posizione 1 dell'array (secondo elemento) e poi passa questo valore come parametro 'n' alla funzione 'carica'.
La funzione 'carica ' crea 1 movie clip vuoto chiamato 'cache ' ed un clip vuoto chiamato 'invisibile ' all' interno di 'cache '.
(var _movie=_root.createEmptyMovieClip('cache',1000);
_movie.createEmptyMovieClip('invisibile',1001)![]()
E' come se tu avessi 2 mc annidati sullo stage.
La funzione 'download ' è una funzione locale del movie 'cache ' che serve per caricare la nuova immagine nel movie 'invisibile '.
(this.invisibile.loadMovie(immagini[n])
La funzione 'onEnterFrame ' è sempre una funzione di 'cache ' e serve per controllare che la nuova immagine sia stata caricata totalmente all' interno della cache del browser. Quando ha finito di caricare deve rendere il movie 'invisibile ' invisibile (this.invisibile._visible = false) poi carica la stessa immagine nel movie clip 'visibile ' che hai sullo stage, quindi l'immagine si potrà vedere, ed infine elimina dalla memoria i 2 mc virtuali 'cache ' e 'invisibile ' (this.unloadMovie())
Ho scritto un tema e spero chi sia comprensibile
Bye
![]()
// FRAME 1 STAGE
immagini = new array("primo.jpg","secondo.jpg","terzo.jpg");
nimmagini = immagini.length - 1;
num = 0;
stop();
_root.msg.text="Stai vedendo immagine "+(num+1);
visibile.loadMovie(immagini[0]);
function carica(n) {
var _movie = _root.createEmptyMovieClip("cache", 1000);
_movie.createEmptyMovieClip("invisibile", 1001);
_movie.download = function() {
_root.msg.text="Stai vedendo immagine "+(n+1);
this.invisibile.loadMovie(immagini[n]);
};
_movie.onEnterFrame = function() {
if (this.invisibile.getBytesLoaded() == this.invisibile.getBytesTotal() &&
this.invisibile.getBytesTotal() > 100) {
this.invisibile._visible=false;
_root.visibile.loadMovie(immagini[n]);
this.unloadMovie();
}
};
_movie.download();
}
// TASTO INDIETRO
on (release) {
if (num>0){
num -=1;
carica(num);
}else{
num=0;
}
}
// TASTO AVANTI
on (release) {
if (num<nimmagini){
num +=1;
carica(num);
}
else{
num=nimmagini;
}
}

Rispondi quotando
