(tratto dal sito: http://www.liviogiordano.it - scritto da Livio Giordano)
Integrazione tra Flash e Asp
Sissignori, sembrerà strano ma a questo
mondo tutto è possibile! Vedremo come creare un applicazione Flash basata su un
database (per questo esempio prenderemo in considerazione un DB Access) ed uno
script ASP che realizzerà la comunicazione tra il database e il filmato Flash.
I requisiti necessari per l'esecuzione dell'esempio sono i seguenti:
rubrica.mdb | Database rubrica (Access 2000) |
rubrica.fla | Rubrica .fla file |
rubrica.swf | Flash 4 movie |
rubrica.asp | ASP back end |
rubrica.html | Flash front end - access via http:// |
Step 1: Creazione del Database rubrica.mdb
Iniziamo con la creazione del Database Access 2000 di
un'ipotetica rubrica:
-creiamo un database vuoto di nome rubrica.mdb
-apriamo una nuova tabella in visualizzazione struttura con i seguenti campi:
ID | Nome | Cognome | Telefono |
1 | Mario | Rossi | 085/12345 |
2 | Giovanni | Verdi | 0734/128954 |
3 | Pasquale | Bianchi | 021/9876543 |
step 2: Creazione del Filmato
Carichiamo Flash 4 e creiamo un nuovo documento, impostando il colore di sfondo
che più ci aggrada. Aggiungiamo un keyframe e le seguenti azioni nel primo frame:
Set Variable: "Cognome" = ""
Set Variable: "success" = ""
Stop
Abbiamo quindi definito delle variabili di input, ora
aggiungiamo una descrizione in cima alla pagina, del genere:
Immetti il cognome della persona da cercare oppure digita "tutto" per
visualizzare l'intera rubrica.
Creiamo una casella di testo e andiamo sulle sue proprietà: cambiando
TextFieldin Cognome.
Aggiungiamo un pulsante di ricerca, possiamo usarne uno creato da noi oppure
utilizzarne uno di quelli disponibili nelle librerie comuni, trasciniamone uno
sullo stage e andiamo sulla sua proprietà istanza e selezioniamo la tabella
azioni: incolliamo il seguente script nella finestra:
On (Release)
Go to and Play (Risultato, 1)
End On
Facciamo click col tasto destro del mouse sul secondo
keyframe e inseriamo un fotogramma chiave vuoto scegliendo Insert Blank Keyframe,
di nuovo tasto destro ed andiamo sulle proprietà del fotogramma, selezionamo la
tabella frame ed incolliamo nella finestra le seguenti linee di codice:
Load Variables ("rubrica.asp", 0, vars=POST)
Questo commando carica le variabili da rubrica.asp. Lo 0
indica il livello in cui vengono caricate tale variabili (0 è il primo livello
secondo l'ordinamento-Z).
A questo punto inseriamo un fotogramma chiave (keyframe) nel fotogramma 3 ed
usiamo i frame dal 3 al 6 per la nostra animazione di caricamento, un banale
esempio è inserire:
"loading." Nel fotogramma3
"loading.." Nel fotogramma4
"loading..." Nel fotogramma5
"loading...." Nel fotogramma6
Ma qualunque escamotage è ben accetto.
Torniamo al Keyframe 3 ed apriamo la sua tabella azioni incollando il seguente
nella finestra:
If (success ne "")
If (success eq "False")
Go to and Stop (8)
Else
Go to and Stop (7)
End If
End If
Nel Frame 6, aggiungiamo un azione come la seguente
Go to and Play (3)
In modo da eseguire un loop dell'animazione fino alla
ricezione dei dati.
Nel frame 7 inseriamo un keyframe vuoto ed aggiungiamo un ulteriore casella di
testo abbastanza grande da contenere i risultai della ricerca, cambiamo
TextFieldin "risultato" e rendiamo la casella non selezionabile ciccando sul
checkbox "Disable Editing".
Inseriamo un altro keyframe vuoto nell'ottavo frame e scriviamo un breve
messaggio di errore del genere:
"La sua meticolosa ricerca termina qui. Il soggetto da lei richiesto non è
presente nel nostro Database..ne pensi un'altra e poi ritorni".
Provvedete anche ad inserire un back button (createlo o usatene uno già pronto)
che rimandi sulla prima scena.
Questo è tutto per quanto riguarda il movie.
<%@Language="VBScript"%> <% ' Dichiaro le variabili Dim RS, Conn, SQL Dim results 'creo un oggetto connection e un oggetto recordset Set Conn = Server.CreateObject("ADODB.Connection") Set RS = Server.CreateObject("ADODB.Recordset") ' Faccio appunto una connessione DSN-Less al DB Conn.Open "DRIVER={Microsoft Access Driver_ (*.mdb)};DBQ= " & Server.MapPath("rubrica.mdb") If UCase(Request("Cognome")) = "Tutti" Then SQL = "SELECT * FROM Emails" Else SQL = "SELECT * FROM Emails WHERE Cognome LIKE_ '" & Request("Cognome") & & End If RS.Open SQL, Conn, 2, 3 ' 2 and 3 specificano le modalità di apertura del ' recordset equivalenti a ' adOpenDynamic e adLockOptimistic. . If RS.EOF Then Response.Write "success=False" Else Response.Write"success=True&results=" Do While Not RS.EOF results = results & RS("Cognome") _ & ", " & RS("Nome") & vbCr results = results & RS("Telefono") & vbCrLf RS.MoveNext Loop � Praticamente eseguo un loop sui record ' contenuti nel recordset RS End If RS.Close Set RS = Nothing Conn.Close Set Conn = Nothing Response.Write Server.URLEncode(results) %> |
Modifica per Flash 5
Lo stesso fla file realizzato con Flash4 può essere chiaramente utilizzato per
Flash 5, il quale riconosce e converte il codice del 4. Potete anche provare a
realizzare il .fla di sopra direttamente in Flash 5, dovete solo stare attenti
alla diversa sintassi degli action-script, ma se usate la finestra azioni nella
modalità normale basterà trascinare le azioni dal riquadro di sinistra sul
riquadro di destra e Flash scriverà il codice al vostro posto.
Per render più interessante questo esempio avremmo potuto sfruttare una delle
nuove caratteristiche di Flash5: la capacità di leggere codice HTML nei suoi
text-boxes.
Allo scopo avremmo potuto aggiungere un campo e-mail a rubrica.mdb,quindi
richiamare anche quest'ultimo sul movie flash includendo un link che richiama
l'e-mail client. Lascio a voi aggiungere il campo e-mail a rubrica.mdb e di
seguito illustro il codice di rubrica.asp che ho modificato per la versione 5 di
Flash.
<%@Language="VBScript"%> <% '================ ' rubrica.asp per Flash 5 '================ ' Di nuovo gli oggetti Connection,Recordset e la stringa SQL Dim RS, Conn, SQL Dim results Set Conn = Server.CreateObject("ADODB.Connection") Set RS = Server.CreateObject("ADODB.Recordset") ' Tanto per cambiare una DSN-less connection al DB Conn.Open "DRIVER={Microsoft Access Driver " _ & "(*.mdb)};DBQ=" & Server.MapPath("rubrica.mdb") If UCase(Request("Cognome")) = "Tutti" Then SQL = "SELECT * FROM Emails" Else SQL = "SELECT * FROM Emails WHERE Cognome LIKE '" _ & Request("Cognome") & "'" End If RS.Open SQL, Conn, 2, 3 ' 2 3 bla bla comunque puoi sempre ' guardare la documentazione di ADO per i vari ' cursor e lock types. If RS.EOF Then Response.Write "success=False" Else Response.Write"success=True&results=" Do While Not RS.EOF results = results & RS("Cognome") & ", " & RS("Nome") & vbCr results = results & ' & RS("Telefono") & ' & vbCrLf '======================================= ' Qui sotto signori c'è la modifica ' eseguita per invocare il client di posta '======================================= results = results & "<A HREF=" & Chr(34) & "mailto:" & _ RS("Email") & Chr(34) & "><u>" & RS("Email") &_ "</u></A>" & vbCrLf '========================================= ' L'operatore underscore_ permette di concatenare una stringa ' nel ritorno a capo '========================================= RS.MoveNext Loop End If RS.Close Set RS = Nothing Conn.Close Set Conn = Nothing |