Salve a tutti, vi anticipo che mi sono avvicinato a as per la prima volta e infatti il risultato si vede.
Sto realizzando una galleria dinamica di immagini con un effetto di scorrimento particolare.
In pratica da un txt prendo un array di immagini, e con un ciclo affianco tutte le immagini con un duplicateMovieClip dove a sua volta viene caricata l'immagine con loadmovie, tutto questo avviene dentro un movieclip scorrimento che faccio spostare di un tot di pixel alla pressione di un pulsante.
codice:
for (n in immagini)
{ _root.scorrimento.clip.duplicateMovieClip("clip"+n,n);
_root.scorrimento["clip"+n].loadMovie("imm\\" + immagini[n]);
a = setInterval(preload, 50,_root.scorrimento["clip"+n]);
setProperty("_root.scorrimento.clip"+n, _xscale, "50");
setProperty("_root.scorrimento.clip"+n, _yscale, "50");
setProperty("_root.scorrimento.clip"+n, _x, pos);
setProperty("_root.scorrimento.clip"+n, _y, "0");
_root.n = _root.n + n;
pos = pos + 320;
n++;
}
Il problema principale è un preload, dato che le immagini possono essere parecchie avrei bisogno di visualizzarle tutte solo quando fosse finito il caricamento di tutte le immagini. Allora ho cercato di rimediare con una funzione e setInterval, vi posto la funzione richiamata con setInterval
codice:
preload = function(clip){
car = clip.getBytesLoaded();
tot = clip.getBytesTotal();
perc = Math.floor((car/tot)*100);
if(!isNaN(perc)){
_root.loading.gotoAndPlay(1);
}
if(car >= tot && tot > perc && perc == 100){
clearInterval(a);
_root.loading.gotoAndStop(11);
//numCaricati++;
//trace(numCaricati);
}
}
Il movieclip loading ha un'animazione dal frame 1 al frame 10, nel frame dieci c'è un gotoandplay(1), mentre nel frame 11 c'è uno stop con una scritta "fine caricamento"
Dato che il numero di immagini è variabile, per sapere quando è finito il caricamento di tutte quante devo contare quante ne sono state caricate e confrontare il numero con il totale delle immagini, così nella funzione nell'if di conclusione del loading ho inserito due righe (che nel codice sopra sono commentate)
codice:
numCaricati++;
trace(numCaricati);
questo mi genera un elenco di numeri infnito che non si ferma mai, come se non si bloccasse il setInterval, ho provato varie sintassi per bloccare il set interval, tra cui
codice:
this.a = setInterval(preload, 50,_root.scorrimento["clip"+n]);
codice:
clearInterval(this.a);
ma nietne da fare, mi genera sempre questo elenco infinito di numeri.
Qualcuno puoi dirmi come mai non si ferma il setInterval? se pensate che sia strutturato male il preload accetto consiglio ben volentieri, purtroppo è la prima volta!!