ti ringrazio e santo subito per ciò che stai facendo! (ovvero aiutare un povero grafico che di programmazione ci capisce non molto)
Grazie a te per l'apprezzamento e la gratitudine ma devo ammettere che l'attributo di "santo" non fa al caso mio perchè mi piace e mi diverte interagire con gli utenti di questo forum non certo per "scopi umanitari", ma più semplicemente perchè anch'io stò imparando AS3 e tutto questo mi aiuta a tenermi in allenamento e fare interessanti esercizi su logiche e concetti non facili da comprendere e assimilare.

Quella del ciclo for è proprio una di quelle logiche che ancora oggi, dopo mesi che la vedo utilizzare in diversi tutorial e esempi di AS3, ancora non mi è completamente chiara ma posso provare a spiegarla, sperando di non fare più confusione che chiarezza.
Scusami se posso apparirti prolisso e ripetere concetti che probabilmente già conosci ma mi serve per tenere il filo logico del discorso nel tentativo di rendere chiara la questione. Comincio dall'inizio:

Succede spesso di dover ripetere le stesse identiche funzioni per un certo numero di oggetti, come per esempio, pulsanti, movieClip, link ecc.
Come nel caso del tuo file, dove ci sono 4 pulsanti e 4 indirizzi che devono essere utilizzati per effettuare le stesse identiche funzioni.

In questo caso, per evitare di dover riscrivere le stesse funzioni per ogni oggetto è meglio usare gli Array indicizzati e un ciclo for che valorizza una variabile ([i]) in relazione a uno degli indici numerici contenuti nell'Array (Quale? Quello che effettivamente serve nel momento in cui viene chiamato).

Mi spiego meglio:
Abbiamo la possibilità di attribuire un Listener a un oggetto semplicemente chiamandolo con il suo nome:

bottone1.addEventListener ....

Se creiamo un Array indicizzato con tutti i nomi dei pulsanti che abbiamo, per richiamare un elemento dell'Array possiamo chiamarlo facendo riferimento alla sua posizione nell'Array:

bottoni[0].addEventListener ....

In questo modo, facciamo riferimento all'indice n.0 dell'Array (quindi a bottone1) ma ancora non abbiamo risolto gran che perchè dovremmo comunque ripetere le righe di codice per ogni elemento dell'Array.

Ecco che diventa importante utilizzare il ciclo for per ottimizzare il codice che, oltre a evitarci di dover riscrivere le stesse righe di codice per ogni oggetto che deve fare le stesse cose, si velocizza la lettura del codice da parte del FlashPlayer e quindi l'esecuzione.

In un ciclo for come prima cosa creiamo una variabile, in questo caso di tipo:int (numero intero)

for (var i:int =0;

Aggiungiamo una condizione da valutare: se minore al valore della variabile iniziale.
Potrebbe essere un numero, ma nel codice sopra è stato usato il riferimento alla lunghezza (.length) dell'Array in modo da poter aggiungere a piacere elementi nell'Array e questi verranno identificati automaticamente e inclusi nel ciclo senza dover modificare altro.

for (var i:int =0; i < filmatiEsterni.length ;

Infine mettimo un incremento della variabile: "i" in modo che cambi il suo valore fino a quando la condizione precedente risulta falsa:

for (var i:int =0; i < filmatiEsterni.length ; i++)

In altre parole: Ora "i" è uguale a "0"; SE "i" è minore della lunghezza dell'Array; Incrementa il valore di "i" di 1.
Questa riga di codice viene letta fino a quando la condizione risulta essere falsa, cioè "i" non è minore alla lunghezza dell'Array quindi basta così, non la incremento più !

Se abbiamo 4 elementi nell'Array e all'interno del ciclo for facciamo un:

trace ([i]);

Otteniamo: 0 1 2 3
Praticamente i 4 indici numerici dell'Array, considerando che il primo indice di un Array è 0.
Si attribuisce quindi alla variabile "i" un valore che può essere compreso tra 0 e 3

Se, sempre all'interno del ciclo for facciamo un:

trace (filmatiEsterni[i]);

Otteniamo i 4 nomi contenuti in filmatiEsterni: page1.swf, page2.swf, page3.swf, page4.swf

Nelle righe successive assegnamo a bottoni[i] una proprietà dinamica che ho chiamato "identificatore" a cui diamo il valore della variabile "i" che essendo appunto "variabile", varia a seconda dell'obietivo "target" effettivo.
Per capire bene cosa fa questo "identificatore" credo possa essere utile fare un trace nella funzione "bottoneDown":

trace (filmatiEsterni[evento.target .identificatore]);

Come vedi il valore identificativo richiesto nell'Array filmatiEsterni[...] è quello effettivo che scatena l'evento ovvero, se premo su "bottone1" "i" ha valore [0] e in "filmatiEsterni" "0" corrisponde al primo indice dell'Array = "page1.swf".


Alla prossima !

ciao