Caricamento di un file xml
La struttura del caricamento è la stessa in Flash 5 e Flash MX. Partiamo con la creazione di un file XML di base, "file1.xml", composto dalla dichiarazione della codifica e da un singolo nodo dotato di un contenuto testuale:
In Flash, creiamo un'istanza della Classe XML, dentro la quale caricare i dati contenuti nel file esterno:
// creiamo un'istanza della Classe XML
mio_xml = new XML();
Quindi, associamo al gestore di evento onLoad
una funzione che verrà chiamata automaticamente a caricamento ultimato:
mio_xml = new XML();
// definiamo la funzione da eseguire
// al completamento del caricamento
mio_xml.onLoad = function()
{
// istruzioni
};
Alla funzione appena definita viene passato, di sistema, un unico parametro. Questo parametro contiene un valore booleano, true
o false
: true
se il caricamento è stato completato in modo corretto, false
in caso contrario (ad esempio quando il file cercato non esiste o ha un altro nome).
Inventiamo quindi un nome per questo parametro, e inseriamolo tra le parentesi della funzione (per l'esempio utilizziamo quello del manuale, "success"):
mio_xml = new XML();
mio_xml.onLoad = function(success)
{
// se il valore di "success" è "true"
if(success){
// istruzioni da eseguire se il
// caricamento è andato a buon fine
trace("caricamento completo");
// altrimenti
} else
{
// istruzioni da eseguire se il
// caricamento non è andato a buon fine
trace("caricamento errato");
}
};
Utilizziamo infine il metodo load
per caricare il file *.xml e settiamo la proprietà ignoreWhite
come vera:
mio_xml = new XML();
// gli spazi e gli a capo nel
// file XML vengono ignorati
mio_xml.ignoreWhite = true;
mio_xml.onLoad = function(success)
{
if success){
trace("caricamento
completo");
} else
{
trace("caricamento errato");
}
};
// carichiamo il file XML
mio_xml.load"file1.xml");
Per poter visualizzare i dati nel filmato, creiamo sulla timeline principale, dove risiede lo script, un campo di testo dinamico multiriga con associata la variabile "testo". Dal momento che gli esempi sono sviluppati in Flash 5, impostiamo la variabile associata dal campo "Variable" del pannello Text Options:
Pannello Text Options
(Nel trasferire gli esempi al Flash MX, potremo usare i nomi di istanza dei campi di testo dedicata al LoadVars
Nota: evidentemente, un'istanza della Classe XML non è un movieclip. Per questo motivo, da dentro la funzione associata al gestore onLoad
non potremo usare un riferimento come _parent
o this._parent
per risalire alla timeline in cui sono presenti i tre campi di testo.
Quello che dobbiamo fare, a questo punto, è creare nell'oggetto "mio_xml" una variabile che contenga un riferimento alla timeline in cui giace, esattamente come se scrivessimo un indirizzo di casa su un bigliettino.
Una volta creato questo riferimento, con la sintassi this.variabile
arriveremo effettivamente alla timeline cercata.
Creiamo, nell'oggetto mio_xml, un riferimento alla timeline in cui giacciono script e campo di testo:
mio_xml = new XML();
// creiamo un riferimento alla timeline in
// cui risiedono sia lo script che i tre
// campi di testo, e salviamolo
// nella variabile "path"
mio_xml.path = this;
mio_xml.ignoreWhite = true;
mio_xml.onLoad = function(success)
{
if(success){
// istruzioni
} else {
// istruzioni
}
};
mio_xml.load("file1.xml");
Modifichiamo quindi lo script in modo da popolare il campo di testo:
mio_xml = new XML();
mio_xml.path = this;
mio_xml.ignoreWhite = true;
mio_xml.onLoad = function(success)
{
if (success){
// creiamo la variabile "testo" nella timeline
// il cui riferimento è contenuto nella variabile
// "path": in questo modo, il campo "testo"
// ci mostrerà il contenuto dell'oggetto dati_xml
this.path.testo = this;
} else {
// informiamo l'utente del mancato caricamento
this.path.testo = "caricamento errato";
}
};
mio_xml.load("file1.xml");
Come possiamo vedere, nel campo di testo appare tutto il contenuto del file xml, privo degli spazi e degli a capo tra i nodi (grazie all'ignoreWhite
). Quindi l'istruzione
this.path.testo = this;
trasferisce nella variabile testo
il contenuto dell'oggetto stesso, indicato dal secondo this
.
Ora, come abbiamo visto nelle pagine precedenti, possiamo visualizzare nel campo di testo solo l'intestazione del file:
mio_xml = new XML();
mio_xml.path = this;
mio_xml.ignoreWhite = true;
mio_xml.onLoad = function(success)
{
if(success){
// mostriamo nel campo di testo solo
// l'intestazione del file xml
this.path.testo = this.xmlDecl;
} else {
this.path.testo = "caricamento errato";
}
};
mio_xml.load("file1.xml");
Oppure, possiamo mostrarne solo il primo nodo figlio:
mio_xml = new XML();
mio_xml.path = this;
mio_xml.ignoreWhite = true;
mio_xml.onLoad = function(success)
{
if(success){
// mostriamo nel campo di testo solo
// il primo nodo figlio del file xml
this.path.testo = this.firstChild;
} else {
this.path.testo = "caricamento errato";
}
};
mio_xml.load"file1.xml");