Come descritto nell'articolo precedente "Caricare i dati da una pagina Asp.Net tramite l'oggetto URLLoader di Flash", Adobe Flash è in grado di caricare dati esterni per manipolare qualsiasi oggetto presente all'interno di se stesso.
Dato che Action Script non è in grado di leggere i dati direttamente da un database, utilizzeremo Asp.Net per convertire i dati in formato XML e poi trasferirli al motore di Flash.
L'oggetto XML a differenze dell'URLLoader, può caricare una sequenza di dati e gestirla in base al contenuto.
Ora vedremo come poter sfruttare queste potenzialità
Anche in questo caso utilizzeremo un database SQLExpress che chiameremo "database.mdf" con al suo interno una tabella che chiameremo "indirizzi", di seguito un esempio di come strutturare la tabella:

Creiamo la pagina Asp.Net che restituisce i dati
Per far si che flash riesca a leggere i dati presenti all'interno del database dobbiamo creare una pagina web che restituisca i seguenti dati in formato xml.

Come al solito utilizzeremo gestori generici .ashx, perché più plasmabili.
Di seguito il codice della routine ProcessRequest del file "xml.ashx".
Public Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest
'imposto il contentType per l'xml
context.Response.ContentType = "text/xml"
'questa riga è modificabile con qualsiasi string
'di connessione riteniate più utile ai vostri
'esperimenti
Dim constring As String = "Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\database.mdf;Integrated Security=True;User Instance=True"
'query di selezione per recuperare i dati
Dim selstring As String = "SELECT * FROM Indirizzi ORDER BY Nome"
'creo gli oggetti per la gestione dei dati
Dim dt As New Data.DataTable
Dim con As New Data.SqlClient.SqlConnection(constring)
Dim da As New Data.SqlClient.SqlDataAdapter(selstring, con)
da.Fill(dt)
'creo il testo dil file xml di base
Dim xml As String = "#data#"
Dim data As String = ""
'creo i contenuti del file xml
For Each dr As Data.DataRow In dt.Rows
data &= String.Format("- {1} {2}
", dr("email"), dr("nome"), dr("cognome"))
Next
'restituisco il file xml completo
context.Response.Write(xml.Replace("#data#",data))
End Sub
File SWF che caricherà i dati
Ora creiamo un file Flash e chiamiamolo "Carica_xml.fla". Al suo interno creiamo un MovieClip di nome "graph", a sua volta contenente, un campo di testo dinamico denominato "testo" ed una altro MovieClip con disegnato un cerchio denominato "cerchio" (viva la fantasia).
Nel fotogramma 1 del MovieClip "graph" inseriamo questa action:
//variabile che sarà riempita esternamente
var link:String;
//associazione di evento al click del mouse
cerchio.addEventListener(MouseEvent.CLICK,onClick);
//funzione che qualifica l'evento CLICK del mouse
function onClick(evt:MouseEvent):void {
var goto:URLRequest = new URLRequest(link);
navigateToURL(goto);
}
ora clicchiamo col pulsante desto del mouse sul nome del MovieClip, all'interno della libreria del file Flash. Scegliamo la voce "Proprietà" e facciamo un segno di spunta sul campo "Esporta per ActionScript", poi diamogli come nome di classe "Graph".
di seguito un esempio del risultato.

Ora possiamo cancellare il MovieClip "graph" dallo stage.
A questo punto andiamo al fotogramma 1 della timeline principale e scriviamo questa action:
//valori di posizionamento iniziali
//del movie clip caricato
var X:Number = 0;
var Y:Number = 0;
//indice di creazione per i movieclip
var n:uint = 0;
//creo gli oggetti per caricare i dati
var loader:URLLoader = new URLLoader();
var request:URLRequest = new URLRequest("xml.ashx");
loader.load(request);
//appena il file xml è stato caricato eseguo la funzione;
loader.addEventListener(Event.COMPLETE, onComplete);
function onComplete(event:Event) {
var myXml:XML = new XML(event.target.data);
for each (var prop:XML in myXml.item) {
var gr:Graph = new Graph();
gr.name = "graph" + n;
gr.x = X;
gr.y = Y;
gr.link = prop.@email;
gr.testo.text = prop;
MovieClip(root).addChild(gr);
X += 273;
Y += 163;
n += 1;
}
}
Come possiamo leggere dal codice, il file Flash, carica tante impostazioni dal file xml.ashx, il quale restituisce un file XML per gli elementi presenti all'interno del database.
A caricamento eseguito, crea tanti oggetti Graph quanti sono gli elementi presenti all'interno del database e ne imposta le proprietà di ognuno, in base ai dati raccolti.
Un esempio completo dell'articolo appena scritto lo potete scaricare da qui: Caricare Dati Asp.Net da Flash.