Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial
  • Lezione 1 di 12
  • livello principiante
Indice lezioni

Introduzione

Introduzione al caricamento di variabili da un file di testo
Introduzione al caricamento di variabili da un file di testo
Link copiato negli appunti

Demistificazione

Prima di parlare delle tecniche di caricamento di un file di testo, è necessario prendere atto di un fattore fondamentale. Tra il momento in cui, in Flash, diamo il via al caricamento, e il momento in cui tutte le variabili esterne sono state caricate, e sono utilizzabili, c'è un lasso di tempo più o meno lungo la cui durata non è assolutamente prevedibile.

Il fatto che a caricare un file txt in locale e a vedere le variabili in un campo di testo ci voglia un attimo, non significa assolutamente niente: succede solo perchè il file di testo è immediatamente disponibile. In rete, invece, ci sono mille fattori che possono rallentare il raggiungimento del file e quindi il caricamento delle variabili: il "collo di bottiglia", un server non disponibile, una linea sovraccarica.

Quello che in locale è "immediato", in rete può voler dire 10 secondi. E 10 secondi sono tanti..

Come fare

In qualunque modo si voglia caricare un file di testo contenente delle variabili, sia con la sintassi del Flash 5 che con quella del Flash MX, bisogna utilizzarne il contenuto solo dopo la verifica della completezza del caricamento. Se, ad esempio, le variabili caricate popolano un campo di testo, la verifica non serve (quando la variabile arriva, popola): ma se vogliamo utilizzare via script la variabile, non possiamo fare affidamento sulla speranza che si carichi in fretta. Dobbiamo prevedere un sistema che ci dica: "le variabili, ora, sono completamente cariche".

Per completare questa verifica, dobbiamo distinguere tra i metodi di caricamento: loadVariablesNum, loadVariables
e LoadVars.load. Prima, però, vediamo come va strutturato il file di testo esterno.

.FILE DI TESTO

Nel file di testo esterno da caricare in Flash, creiamo una variabile con questa struttura:

variabile=valore

Il che significa che se vogliamo creare la variabile "testo" con il contenuto "Nel mezzo del cammin di nostra vita...", scriveremo:

Da notare:

  • la prima parola del testo è il nome della variabile
  • tra il nome della variabile e il simbolo "=" non ci sono spazi
  • dopo il simbolo "=" non ci sono spazi (altrimenti il contenuto inizierebbe con uno spazio)
  • tutte le variabili esterne vengono considerate, da Flash, come stringhe

Nel caso volessimo inserire più variabili, nel file di testo, dovremmo ampliare la struttura iniziale:

variabile1=valore1&variabile2=valore2&variabile3=valore3

L'impostazione variabile=valore non cambia, ma per separare le diverse variabili, dobbiamo utilizzare il simbolo &. Ad esempio:

File di testo

Da notare:

il carattere & serve a separare le coppie variabile-valore, un testo di questo tipo genererebbe quindi un errore:

testo=Mario&Co.

Nel nostro filmato, infatti, la variabile "testo" avrebbe valore "Mario", e non "Mario&Co.": questo perchè il simbolo & indica la fine del valore della variabile, e la parte rimanente verrebbe considerata come una nuova.

Per includere nel valore di una variabile la "e" commerciale (come per inserire anche altri caratteri "problematici"), si utilizza la tecnica dell'URL Encoding, cioè la sostituzione dei caratteri suddetti con altre sequenze di caratteri che li rappresentino.

Nel caso appena visto, dovremmo sostituire il simbolo & con la sequenza "%26", ottenendo:

testo=Mario%26Co.

Naturalmente, quando vorremo aggiungere un'altra variabile, il simbolo & andrà inserito normalmente:

testo=Mario%26Co.&anno=2003

Inserire le variabili una dopo l'altra può essere difficoltoso, soprattutto al momento di modificarne una in mezzo a tante. E' quindi possibile utilizzare una scrittura di questo tipo:

File di testo

File di testo

Quello che però va considerato, è che alla fine del valore delle variabili, una volta caricate in Flash, apparirà il rimando a capo, interpretato come la sequenza di caratteri "rn". Per questo motivo, se vogliamo utilizzare questa struttura, dovremo eliminare la sequenza indesiderata tramite Actionscript a caricamento ultimato.

come già accennato, tutte le variabili caricate dall'esterno vengono considerate, dal player del Flash, come stringhe. Per questo motivo, bisogna stare attenti a non trattarle come numeri quando non lo sono: infatti, i sistemi con cui il player converte i tipi di dati a seconda delle operazioni richieste non è certamente immediato, e può presentare dei risultati inaspettati.

La cosa migliore da fare, quindi, quando ci aspettiamo che le variabili caricate siano dei numeri, è convertirle in numeri prima di utilizzarle. Ad esempio, una volta caricate le variabili "a" e "b":

// ricordo che flash le
// interpreta come stringhe

a = "2";
b = "3";

la somma delle due darà "23" (somma tra stringhe):

// scrive 23 nella finestra dell'Output

trace (a + b);

Se vogliamo considerarle come numeri, le convertiamo con la funzione Number prima di utilizzarle:

// scrive 5 nella finestra dell'Output

traceNumber (a)+ Number(b));

quando un filmato in Flash carica un file di testo (ma la stessa cosa vale per una pagina asp, php, cfm, o per un documento xml, un file mp3 eccetera) che viene aggiornato frequentemente, è normale che al reload del documento appaiano ancora i vecchi dati, nonostante questi siano stati correttamente aggiornati.

Il perchè è facilmente intuibile: quando il browser riceve la richiesta del caricamento, cerca il documento (il file di testo, in particolare) nella cache, e trovandolo ce lo restituisce senza scaricarlo nuovamente dal server. Per forzarlo quindi a scaricarlo, bisogna fargli credere che si tratti di un documento diverso.

Questo lo si fa aggiungendo alla fine del nome del file, quando viene invocato il caricamento, una variabile fittizia con un valore sempre diverso. Il modo più semplice di ottenerlo è il seguente:

loadVariablesNum("file.txt?foo=<" + random, 0);

oppure:

this.loadVariables("file.txt?foo=" + random(999999));

o ancora:

dati.load("file.txt?foo=" + random(999999));

a seconda del metodo di caricamento utilizzato. Naturalmente, la variabile "foo" non ha significato, e può essere cambiata a piacimento: indipendentemente da come si chiamerà, avrà con una buona probabilità un valore diverso per ogni volta che viene invocato il caricamento, confondendo quindi il browser come voluto.

Ti consigliamo anche