- Home
- Categorie
- Digital Marketing
- Grafica, Visual Design & UX
- galleria di immagini dinamica (che non va...)
-
galleria di immagini dinamica (che non va...)
Premesso: sono assolutamente principiante.
Il mio obiettivo è creare una galleria di immagini che senza intervento utente scorrano ciascuna preceduta da una descrizione.
Ogni descrizione viene visualizzata con effetto di fade on e fade off e lo stesso l'immagine.
Le immagini possono essere in numero variabile ed hanno nomi da 0.jpg a n.jpg.
C'è un file di testo esterno dove sono contenute le descrizioni delle immagini e una variabile con il numero di elementi.Ecco cosa ho provato a fare:
FRAME 1:
// carica descrizioni // dati = new LoadVars(); _global.numElem = 0; dati.onLoad = function (success) { if (success) { _global.numElem = dati.tot; titoli =new Array(); for(indDesc = 0;indDesc < numElem; indDesc++) { pushed = titoli.push(dati["d" + indDesc]); } gotoandplay(3); } else { trace("problemi con il file di testo"); } } dati.load("descrizioni.txt");
FRAME 2:
stop();
FRAME 3:
// carica le foto // var indFoto = 0; var car = new MovieClipLoader(); url = ""; /* eventuale percorso per le immagini */ for (indFoto = 0; indFoto < _global.numElem; indFoto++) { car.loadClip(url + indFoto + ".jpg", "mcPortafoto" + indFoto); // qui il primo problema; non sapendo a priori quante foto avrò come posso sapere quanti portafoto devo creare? come posso creare un numero di portafoto dinamicamente? oppure ci sono altre soluzioni? }; indFoto = 0;
FRAME 20:
mcContDesc.varDesc = titoli[indFoto]; // metto nel contenitore della descrizione la descrizione caricata
dal frame 20 in poi comincia l'effetto "fade in" e poi "fade off" sul contenitore della descrizione.
ebbene questo funziona!FRAME 95:
// carica una foto per volta // secondo problema: avevo provato a scrivere qualcosa del tipo [mcPortafoto + indFoto].x = 50 ecc. ma mi dà errore; per testare cmq la cosa ho inserito il nome di una delle istanze dei portafoto; come posso risolvere? mcPortafoto0._x = 50; mcPortafoto0._y = 110; mcPortafoto0._visible = true;
Dal frame 95 in poi inizia il fade in ed il fade off dell'immagine.
E questo è il terzo problema: appare il bel contenitore ma non ha caricato un bel niente!
Come mai?FRAME 210:
indFoto++; if (indFoto == 10) { indFoto = 0; }; gotoAndPlay(21);
Grazie mille ciao!
-
Ciao,
numElem è il numero totale di immagini, quindi nel frame 210 al posto di if (indFoto == 10) scrivi if (indFoto == numElem)
-
Hai ragione grazie mille, è rimasto quel valore che avevo messo all'inizio prima di tentare di rendere dinamico il tutto.
Lo correggo ma purtroppo non mi risolve i problemi!
-
Quali problemi ?
-
Chiedo scusa, ho scritto il primo post in modo un po' disordinato ed in effetti non si notano bene i "problemi"
Il primo è che a priori non so quanti portafoto devo creare perchè il numero delle immagini è sconosciuto fino alla lettura del .txt; ma qui penso di poter risolvere, mi pare esista un "duplicate" che possa fare al caso mio da usare n volte.
Il secondo è al frame 95.
Lì ho scrittomcPortafoto0._x = 50; mcPortafoto0._y = 110; mcPortafoto0._visible = true;
Però non va bene perchè non è mcPortafoto0 ma mcPortafoton...
Ho provato a scrivere degli obbrobri tipo [mcPortafoto + indFoto].x = 50 ma non gli piace chissà perchè.Ed il terzo problema è che... L'immagine non mi viene caricata.
Almeno per il mcPortafoto0 mi sarei aspettato di vederla...Grazie.
-
prova con this["mcPortafoto" + indFoto].x oppure
this.["mcPortafoto" + indFoto].xL' immagine non la carica perchè hai solo istanziato il MovieClipLoader.
Devi anche aggiungere un Object che funge da listener:
var obj:Object=new Object();poi devi assegnare il listener
car.addEventListener(obj);
caricare l' immagine
car.loadClip(....);poi devi intercettare l' evento per cui il listener è in ascolto
obj.onLoadComplete=function()
{
trace('caricato');
}Ti invito anche a dare u' occhiata alla guida Flash gurdando gli esempi della classe MovieClipLoader