Ciao, vi espongo il problema che ho nel pubblicare un menu dinamico.

Al primo frame carico il file .txt esterno e faccio in modo che la vita riprenda a scorrere sulla timeline solo in seguito ad una verifica di effettivo caricamento:

stop();
var arts:LoadVars = new LoadVars();

//uso o uno o l'altro dei seguenti cicli if.
//(il secondo usa una variabile contenuta nel file esterno)

if (arts.getBytesLoaded()>=arts.getBytesTotal()) {
play();
}
if (arts.EOF == "true") {
gotoAndPlay(2);
}
arts.load("txts/arts.txt");

//oppure uso quest'altro sistema (mi sembra che vadano bene tutti):
if (arts.onLoad(success)) {
play();
}
arts.load("txts/arts.txt");



Al quidicesimo frame ho questo bello scriptone:

stop();

//in un campo di testo per solo scopo di verifica, tanto per avere conferma,
//faccio apparire il valore "true" del secondo ciclo di prima:
_root.verifica_txt.text=arts.EOF;

/* "inputVal" è il numero di voci complessive caricate (contenuto nell'oggetto LoadVars sul primo frame, che carica i dati);
"numeravoci" mi serve solo a numerare correttamente i duplicati del movieclip "square" (vedi oltre), ossia un singolo rettangolo con campo di testo, che verrà importato dalla libreria
"_root.items_txt" è solo un campo di testo che mi dirà, in base a "inputVal", quanti elementi avrà il menu
"numeravoci" è un espediente grafico: mi serve solo a generare un menu con il doppio di "square" rispetto alle voci "inputVal"
*/

_root.items_txt.text = "Arts. Items: "+arts.inputVal;
var allSquares:Number = arts.inputVal*2;
var numeravoci:Number = 0;

// posizione y del primo "square" attaccato
var pos:Number = 0;

// posizione y iniziale di "holder", ossia il clip in cui viene importato e duplicato "square".
// tale y di "holder", come vedete, è data da una variabile posta in "holder" stesso
//(non è importante per quanto riguarda il problema vero)

_root.holder._y = _root.holder.inizialeY;

// Maschero il "holder" con "maskholder", perché ne ho bisogno!
_root.holder.setMask(_root.maskholder);


/* Mi faccio una bella funzione, "doAttach()"
Questa funzione carica "square" sulla root per creare
uno "schedario" di voci, disposte ad elenco verticale;
ma dato che il numero di dati esterni varierà a seconda dei documenti a disposizione,
il ciclo "if" specifica che gli oggetti "square" ad assumere un nome o un
valore nel campo di testo saranno solo quelli corrispondenti
al numero di dati esterni. Scusatemi, forse mi spiego male
*/
function doAttach() {
for (i=0; i<allSquares; i++) {
_root.holder.attachMovie("square", "square"+i, i);
this.mc = _root.holder["square"+i];
this.mc._y = _root.pos;
_root.pos += 14;
numeravoci++;
if (numeravoci<=arts.inputVal) {
this.mc.titolovoce_txt.text = arts[numeravoci];
} else {
this.mc.titolovoce_txt.text = "–";
}
}
}
// ...E si mette in moto subito "doAttach()"
doAttach();

***

Adesso vi dico cosa succede.
Una volta messo in rete per prova, questo script agisce bene finché deve caricare le variabili nel flashmovie (la prova di ciò è l'avanzamento della testina sulla timeline: se le variabili non fossero caricate, non arriverei mai al frame 2 e di conseguenza al 15 dove continuo il lavoro).

Però, e qui forse si ferma la mia conoscenza di actionscript, se in versione locale riesco ad arrivare al frame 15 e a compiacermi dell'apparizione di un bel menu con tante belle voci prese dal file .txt esterno, nonché a visualizzare il testo "true" nel campo di testo di verifica, una volta portato in rete e provato con un browser, il menu non riesce ad essere generato.

Invece di usare "attachMovie" ho provato a ripensare il mio lavoro e a usare "duplicateMovieClip", ma non è cambiato nulla; ho poi creato un altro ciclo per dar tempo alla funzione "doAttach()" di lavorare, e pensavo di aver fatto una bella pensata. Niente anche stavolta.

Se qualcuno ha pazienza, se qualcuno può darmi suggerimenti, se qualcuno vuole che sia più chiaro, ne sarei grato.
Marcello