Salve, visto l'insuccesso dello scorso quesito (che dovrei aver risolto scrivendo più codice per distruggere e controllare piuttosto che che per creare) ne pongo un altro.
Situazione:
carico dei dati dal server, sono tanti ... cioè non tantissimi ma abbastanza da creare problemi al player.
trattasi di un paio di migliaia di contatti, caricati in LoadVars e suddivisi, per ogni contatto, in circa una decina di informazioni.
L'operazione di parsing, tramite il benchmark da me effettuato, dura circa 1 secondo sul mio Centrino 1.6, sicuramente non l'ultimo e veloce processore ma per me ancora buono.
Il ciclo che impegna la CPU è fatto così
codice:
// codice all'interno di un onLoad
var a:Number = 0;
while(this["info" + a]) {
// parsa ed assegna valori
++a; // ++a va più veloce di a++ su loop "consistenti"
}
il codice è semplice, funziona alla perfezione ma su un PC non molto potente (un Mac non recente, un Pentium 3 e probabilmente altri) fa scattare "l'allarme" al player con una finestra di dialogo che dice:
"Questo movie sta effettuando un loop infinito, fermare le operazioni ?"
Dopo aver dato sfogo a tutte le mie risorse per ottimizzare e velocizzare il parsing, senza ottenere risultati differenti, mi è venuta in mente una cosa "stupida", ovvero prendere in giro il Flash Player.
Come ? Semplicemente switchando da while a for il loop, sapendo che più di 5.000 risultati non potranno esserci (l'idea era questa: "ora non può pensare che sia un loop infinito").
codice:
for(var a:Number = 0; a < 5000; a++) {
if(this["info" + a]) {
// parsa ed assegna valori
}
else
a = 5000; // termina il loop
}
Ora, sebbene sembra che il problema sia risolto, scopo sempre primario, questa soluzione non mi sembra ne troppo coerente ne troppo pulita e soprattutto non mi sembra portabile o scalabile.
Qualcuno di voi sa se esiste un modo per dire al player che si è certi che il loop while non è infinito o conosce un modo scalabile per affrontare la questione ?
Grazie 
[edit]
operazioni tentate prima del for:
1 - usare array e join per concatenare le stringhe (in JS è più veloce, in AS nemmeno tanto)
2 - usare proprietà predefinite in un array per evitare di riconcatenare ogni parametro
3 - usare una funzione "a steps", ovvero in grado di fare il while ed uscire di 100 in 100, o 500 in 500
4 - mettere su caffè, fumare 12 sigarette, pulire il fornello dal caffè strabordato, bruciato e bollito
5 - altro ancora ...