Riporto qui lo script formattato, giusto per leggerlo meglio:
codice:
for (i=1; i<=_root.lavori; i++) {
if (i<10) {
igm = "00"+i;
}
igm = _root.percorsolavori+"/"+igm;
_root.slide.attachMovie("immagine", "immagine"+i, 1000+i);
_root.slide["immagine"+i].attaccaimmagine.loadMovie(igm+".png");
_root.slide["immagine"+i].i = i;
lv = new LoadVars();
lv.load(igm+".txt");
lv.onLoad = function(success) {
if (success) {
_root.slide["immagine"+i].cli = this.cliente;
trace("i = "+i);
trace("slide = "+_root.slide);
trace("immagine = "+_root.slide["immagine"+i]);
}
};
}
Lascia perdere lockroot, il problema è nella variabile "i"
Come ha indicato and80, l'evento onLoad è asincrono e quindi la variabile "i", anche se risulta definita, assume in questo caso l'ultimo valore del ciclo for, cioè 8.
Dovresti passare il valore "i" in qualche modo.
Puoi passarlo ad esempio all'oggetto loadVars in modo da recuperarlo all'interno dello stesso.
Inoltre credo sia meglio definire il loadVars come variabile locale, anteponendo "var"..
In rosso le parti da modificare/aggiungere.
codice:
for (i=1; i<=_root.lavori; i++) {
if (i<10) {
igm = "00"+i;
}
igm = _root.percorsolavori+"/"+igm;
_root.slide.attachMovie("immagine", "immagine"+i, 1000+i);
_root.slide["immagine"+i].attaccaimmagine.loadMovie(igm+".png");
_root.slide["immagine"+i].i = i;
var lv = new LoadVars();
lv.i = i;
lv.load(igm+".txt");
lv.onLoad = function(success) {
if (success) {
_root.slide["immagine"+this.i].cli = this.cliente;
}
};
}
Spero funzioni.