Un aspetto particolarmente utile per lo sviluppo di giochi e applicazioni è la possibilità di caricare dei dati esterni al filmato. Pensiamo ad esempio ad un'applicazione che va a recuperare le notizie più recenti di un sito, o che carica determinate informazioni da un file presente sul cellulare; purtroppo in Flash Lite 1.1 non è possibile salvare dati e file sulla periferica, mentre è possibile caricarli.
Il caricamento può avvenire da diverse fonti come ad esempio file di testo, script server-side (php, asp, ...), eccetera, sia che queste siano presenti sul cellulare oppure su internet. Il codice da utilizzare è molto semplice e bastano pochi passaggi per ottenere il risultato voluto. Vediamo i passaggi da seguire.
Preparazione del file esterno
Per prima cosa vediamo come il file esterno dev'essere strutturato perché possa essere letto da Flash. Il file dovrà restituire le variabili e i valori in questo modo:
Listato 1. Sintassi del file per il passaggio di varibili
variabile1=valore&variabile2=valore2
La struttura è quindi nomevariabile=valore, usando la "E commerciale" (&) per dividere le diverse variabili. Questa struttura vale per qualsiasi tipo di file: nei file di testo basterà scriverla direttamente, gli script server side dovranno restituire una stringa di quel tipo (non vedremo come fare in questo caso poiché esula dagli scopi di questa guida).
Prepariamo un semplice file di testo, chiamiamolo "dati.txt" e scriviamoci dentro
Listato 2. Contenuto di "dati.txt"
testo1=Caricamento dati esterni&testo2=Il nostro primo esperimento
Vediamo come recuperare questi valori per usarli in flash.
Importare i dati nel filmato
Per caricare i dati da un file esterno è sufficiente una riga di codice. I dati potranno poi essere visualizzati come testi dinamici. In questo caso assegnamo ad un campo di testo dinamico la variabile con il nome che troviamo nel file esterno. Creiamo due campi di testo con variabili "testo1" e "testo2".
Listato 3. Esempio di uso della funzione loadVariablesNum()
loadVariablesNum("Dati.txt",0);
I dati estratti dal file vengono asociati al livello 0 (che è il livello principale, su cui si trovano i campi di testo dinamico che abbiamo creato).
Testando il file nell'emulatore il risultato dovrebbe essere simile a quello mostrato in figura.
Caricare dati dal web
Il caricamento di dati dal web è uguale a quello visto finora, semplicemente dovremmo inserire il percorso completo con l'URL del sito, in questo modo
Listato 4. Caricamento dati esterni da web
loadVariablesNum("http://www.sito.it/Dati.txt",0);
In questo caso il filmato va testato sulla periferica, poichè non funziona sull'emulatore. Da notare che se avviamo il filmato sul cellulare senza esserci prima connessi viene automaticamente richiesta (e poi effettuata nel caso la si consenta) la connessione.
Un semplice preload
Nel caso trasferissimo grosse quantità di dati, o comunque nel caricamento da web su cellulari che non sfruttino le ultime connessioni, è utile mostrare all'utente un messaggio che lo avverta che il caricamento dei dati è in corso.
Purtroppo in Flash Lite non abbiamo un controllo vero e proprio sulla quantità di dati caricati, per cui dobbiamo usare come al solito un metodo alternativo: finchè una delle variabili contenute nel file esterno non è caricata nel filmato, diamo per assunto che il caricamento non è completato; una volta che la variabile esterna viene caricata da Flash faremo invece sparire il messaggio di caricamento.
Creiamo un movieclip composto da due fotogrammi e sul primo fotogramma inseriamo un campo di testo statico con la scritta "Caricamento in corso...".
Sempre sul primo fotogramma scriviamo il codice:
Listato 5. Fa sparire il loader quando "testo1" viene caricata
if(_root.testo1 != ""){
_visible = false;
}
Quindi inseriamo il movieclip creato nell'area di lavoro.
Eseguendo questa operazione faremo in modo che, finchè la variabile "testo1" non avrà un valore (il codice !=""
significa "non è vuota", ha un valore diverso da quando è vuota), il testo "Caricamento in corso" sarà visibile. Non appena la variabile sarà stata caricata, l'azione _visible = false
fa sparire il movieclip contenente il testo di caricamento.
Ovviamente nell'emulatore non avremo quasi modo di vedere il messaggio relativo al caricamento, poiché le variabili esterne vengono caricate molto rapidamente.
Abbiamo visto come caricare e mostrare dati da fonti esterne. Purtroppo come abbiamo accennato non è possibile salvare dati sulla periferica in questa versione di Flash Lite (ci sono comunque dei tool che possono aiutare in questo, come vedremo in seguito), ma anche solo il caricamento può essere utile in una grande varietà di situazioni.
È possibile scaricare l'esempio sviluppato in questa lezione.