sai cosa?! forse ho sbagliato l'approccio...
invece di mc["interval"] prova con _root[mc_name+"interval"] e di conseguenza aggiusta anche il clearInterval nella funzione al posto di target[interval] metti _root[target._name+interval]
sai cosa?! forse ho sbagliato l'approccio...
invece di mc["interval"] prova con _root[mc_name+"interval"] e di conseguenza aggiusta anche il clearInterval nella funzione al posto di target[interval] metti _root[target._name+interval]
Esatto!
adesso funziona correttamente!!!
![]()
Mitico! Adesso spero di essere in grado di andare avanti correttamente!
Grazie mille!!!
![]()
per chi dovesse leggere, piccola svista di battitura nell'ultima risposta:
_root[mc._name+"interval"] tra mc e _name ci va il punto
vero, non posso più correggerlo peròOriginariamente inviato da frifrini
Esatto!
adesso funziona correttamente!!!
![]()
Mitico! Adesso spero di essere in grado di andare avanti correttamente!
Grazie mille!!!
![]()
per chi dovesse leggere, piccola svista di battitura nell'ultima risposta:
_root[mc._name+"interval"] tra mc e _name ci va il punto![]()
facciamo che riporto il tuo codice corretto![]()
codice:function preload(target, interval) { var car = target.getBytesLoaded(); var tot = target.getBytesTotal(); var perc = Math.floor((car/tot)*100); if (!isNaN(perc)) { stato.text = "sto caricando"; } if (car>=tot && tot>perc && perc == 100) { if (target._width>0 && target._height>0) { clearInterval(_root[target._name+interval]); larghezza = mc._width; stato.text = "finito"; } } } //caricamento dati System.useCodepage = true; datiesterni = new LoadVars(); datiesterni.onLoad = function(success) { if (success) { _root.createEmptyMovieClip("anteprime", 1); i = 0; while (++i<=3) { anteprime.createEmptyMovieClip("th"+i, i); mc = eval(anteprime["th"+i]); mc.loadMovie(datiesterni["thumb"+i]); _root[mc._name+"interval"] = setInterval(preload, 100, mc, "interval"); mc._x = larghezza*i+10; misure.text = larghezza; } } img_prodotto.loadMovie(datiesterni.immagine); nomeP.text = datiesterni.nome; }; datiesterni.load("filtro_scheda.asp?IDProdotto=1");![]()
Pensavo di aver risolto ed invece... c'è ancora qualche cosa che non va!
In pratica se vedo bene quello che succede il preload si funziona ma si riferisce al caricamento delle tre clip insieme.
riassumo:Siccome devo posizionare delle jpg caricate esternamente, tutte con lunghezze diverse ho bisogno (credo)di richamare la prima jpg, bloccare il ciclo finche questa non è caricata, recuperarne la larghezza per utilizzarla poi per posizionare la seconda jpg, riprendere il ciclo per caricare la seconda jpg... etc. etc. ...giusto il ragionamento???
Purtroppo però compaiono la prima e la terza (che sono più leggere) e si vede la scritta sto caricando... poi quando compare anche la seconda la scritta finito... tentando di recuperare le larghezze ottengo quindi solo quella dell'ultima caricata... dove sbaglio???
function preload(target, interval) {
var car = target.getBytesLoaded();
var tot = target.getBytesTotal();
var perc = Math.floor((car/tot)*100);
if (!isNaN(perc)) {
stato.text = "sto caricando";
}
if (car>=tot && tot>perc && perc == 100) {
if (target._width>0 && target._height>0) {
clearInterval(_root[target._name+interval]);
stato.text = "finito";
}
}
}
//caricamento dati
System.useCodepage = true;
datiesterni = new LoadVars();
datiesterni.onLoad = function(success) {
if (success) {
_root.createEmptyMovieClip("anteprime", 1);
i = 0;
while (++i<=3) {
anteprime.createEmptyMovieClip("th"+i, i);
mc = eval(anteprime["th"+i]);
mc.loadMovie(datiesterni["thumb"+i]);
_root[mc._name+"interval"] = setInterval(preload, 100, mc, "interval");
misure.text = mc._width;
}
}
img_prodotto.loadMovie(datiesterni.immagine);
nomeP.text = datiesterni.nome;
};
datiesterni.load("filtro_scheda.asp?IDProdotto=1") ;
![]()
hai ragione, a questo non avevo pensato.... tenendo buono il codice del preload che è corretto, bisogna creare i "presupposti" per una verifica del caricamento del file precedente... si potrebbe fare usando un indice che finchè non è uguale al numero del clip processato in quel momento o da processare subito dop, blocca il ciclo... mmh :master:
Grazie per essere di nuovo in mio soccorso!
Quello che dici, ovviamente, va oltre le mie capacità...
pensavo che essendo la funzione preload all'interno del ciclo questo dovesse attendere...
He he... pensavo male!![]()
il ciclo è velocissimo, a questo punto la cosa migliore sarebbe quella di non usare il ciclo e mettere direttamente nella funzione l'indice che incrementa a ogni immagine esterna caricataOriginariamente inviato da frifrini
Grazie per essere di nuovo in mio soccorso!
Quello che dici, ovviamente, va oltre le mie capacità...
pensavo che essendo la funzione preload all'interno del ciclo questo dovesse attendere...
He he... pensavo male!![]()
cioè direttamente all'interno della funzione di preload? ...potrebbe essere.
Provo
esattamente, in pratica fai il primo caricamento, poi nella funzione di preload di questo, nella parte delle azioni a chiusura di caricamento, richiami il caricamento all'immagine successiva, una roba del genereOriginariamente inviato da frifrini
cioè direttamente all'interno della funzione di preload? ...potrebbe essere.
Provo
salvo percorsi... dovrebbe funzionarecodice:function preload(target, interval) { var car = target.getBytesLoaded(); var tot = target.getBytesTotal(); var perc = Math.floor((car/tot)*100); if (!isNaN(perc)) { stato.text = "sto caricando"; } if (car>=tot && tot>perc && perc == 100) { if (target._width>0 && target._height>0) { clearInterval(_root[interval]); stato.text = "finito"; if(_root.i<=3){ _root.i++; anteprime.createEmptyMovieClip("th"+_root.i, _root.i); mc = eval(anteprime["th"+_root.i]); mc.loadMovie(datiesterni["thumb"+_root.i]); _root["interval"] = setInterval(preload, 100, mc, "interval"); misure.text = mc._width; } } } } //caricamento dati System.useCodepage = true; datiesterni = new LoadVars(); datiesterni.onLoad = function(success) { if (success) { _root.createEmptyMovieClip("anteprime", 1); _root.i = 1; anteprime.createEmptyMovieClip("th"+_root.i, _root.i); mc = eval(anteprime["th"+_root.i]); mc.loadMovie(datiesterni["thumb"+_root.i]); _root["interval"] = setInterval(preload, 100, mc, "interval"); misure.text = mc._width; } img_prodotto.loadMovie(datiesterni.immagine); nomeP.text = datiesterni.nome; }; datiesterni.load("filtro_scheda.asp?IDProdotto=1");![]()
Ci metto tanto perchè son lento a far le prove ma son quì.
Sembra funzionare correttamente, adesso però devo inserire un nuovo clearInterval altrimenti dopo aver caricato la terza foto mi resta in "sto caricando"
Adesso faccio le prove del caso e vedo se riesco a disporre le clip alla giusta distanza tra loro e poi spero di ringraziarti definitivamente per il grande aiuto!