Flash 的功能已經非常強大,完全可以跟其他的伺服器端語言結合起來,做出適合現在的網路應用的網站。一個典型的模式就是Flash 與Asp的結合使用。其架構1所示。
圖01
可以把上面的結構看成是三層,Flash是一層,Asp是一層,資料庫是一層。對Flash和Asp有點瞭解的人,只要處理好層與層之間的互動,結合使用Flash與Asp就決不是什麼難事。
一、下面我們就先來看看Flash與Asp之間的互動
Flash與Asp的通訊是用Http協議,其請求格式為http://ip地址?參數1=值1&參數2=值2
即是在目的地址後面加上問號,再跟上參數字串,參數之間用“&”號格開。如:
http://www.pcedu.com.cn/test.asp?userid=guest&pwd=123
在上面的請求中,請求的目的檔案為:http://www.pcedu.com.cn/test.asp,第一個參數名為userid,值為guest,第二個參數名為pwd,值為123。
Flash與Asp之間的互動無非就是構造上面的請求字串。
1、在Flash中,先構造好請求的字串,然後利用函數LoadVariables(),就可以向伺服器端發送請求和參數。我們來詳細看看LoadVariables()這個函數。
函數的標準格式為loadVariables ("url" ,level/"target" [, variables])
在函數的各個參數中,url就是上面說的請求字串。level/“target”是傳回值的“層次”或者“目標”,這兩個當中只能指定一個。variables是請求的方式,其值可以是“Get”或者是“Post”,一般Get用於參數值比較短的傳送,Post用於參數值比較長的傳送,這個參數是可選的。比如loadVariables ("http://www.pcedu.com.cn/guest.asp?userid=guest&pwd=123" ,0, “GET”)就是一個完整的請求。
2、在Asp中,先要取得從Flash端傳送過來的參數,這跟操作普通的HTML表單是一樣的。都是利用Request對象,其語句為:
username = Request(“userid”)
password = Request(“pwd”)
userid和pwd就是從Flash端發送過來的參數名,如果是上一步中的請求字串,username的值為guest,pwd的值為123。
3、在伺服器端處理完請求,獲得所需要的值後,Asp向Flash端發送結果,跟從Asp中操作Html語言一樣,都是用Response對象,其語句為:
Response.Write(“login=true&des=success”)
其傳回值1的名為login,值為true,傳回值2的名為des,值為success。
4、在Flash端取得從伺服器端返回的值,與操作Flash中普通的變數沒什麼不同。如:
_root.gotoAndPlay(eval(login))表示的是跳轉到login的值的那一幀。但要注意的是在發送請求一段時間之後,才能用傳回值,不然取得的是尚未返回的值,錯誤就在所難免了,而且這一類的錯誤很難發現,用的時候要多加小心。
二、Asp與資料庫之間的互動
在Asp與資料庫的互動一般是用ADO控制項。其讀取資料庫的語句為:
‘定義一個Connection對象
set conn=Server.CreateObject("ADODB.Connection")
‘用Connection對象開啟資料庫,這裡開啟的是sql server,資料庫的地址為192.168.1.32
‘資料庫的使用者名稱為zengyu,密碼為123
conn.open application("Driver={SQL Server};SERVER=192.168.1.32;DATABASE=test;UID=zengyu;PASSWORD=123")
‘建立一個Recordset對象
set rstemp=Server.CreateObject("ADODB.Recordset")
‘構造一個sql語句
sqltemp1="select * from UserInfo where userid='"&strname&"' and password='"&strpassword&"'"
‘查詢資料庫
rstemp.open sqltemp1,conn, 1, 1
if not(rstemp.bof and rstemp.eof) then
Response.Write (“login=true”)
end if
這裡實現的只是簡單地查詢資料庫,要想瞭解Asp操作資料庫更詳細的東西,可以找Asp與資料庫方面的資料深入學習一下。
三、例子――登陸的實現
下面我們來製作一個簡單的執行個體,在Flash端輸入使用者名稱和密碼,通過Asp查詢資料庫,如果使用者名稱和密碼正確,就跳轉到登陸成功介面,否則就跳轉到登陸失敗介面。
1、建立一個Flash,在情境中製作兩個文字框和一個Button,2所示。其中使用者名稱對應的文字框屬性3所示,密碼對應的文字框屬性4所示。注意其中的文本類型和變數名。
圖02
圖03
圖04
2、建立另外兩個主要畫面格,分別命名為“true”和“false”,並分別顯示“登陸成功”和“登陸失敗”字樣。
3、在Button的ActionScript中增加下面的語句,注意更改其中的ip地址。
on (release) {
loadVariables("http://192.168.1.32/guest.asp?userid=" add eval(_root.userid) add "&pwd=" add eval(_root.pwd),this, "GET");
now = new Date();
begintime = now.getSeconds();
while(true) {
endt = new Date();
endtime = endt.getSeconds();
if (endt - now > 2)
{
_root.gotoAndPlay(eval(login));
}
}
}
4、在Sql Server資料庫(資料庫的類型不重要,改一改串連串就可以的)中,建立一張名為“userinfo”的表,其中有“Userid”和“Password”兩個欄位。
5、建立一個guest.asp檔案,檔案內容為
username = Request(“userid”)
password = Request(“pwd”)
set conn=Server.CreateObject("ADODB.Connection")
conn.open application("Driver={SQL Server};SERVER=192.168.1.32;DATABASE=test;UID=zengyu;PASSWORD=123")
set rstemp=Server.CreateObject("ADODB.Recordset")
sqltemp1="select * from UserInfo where userid='"&username&"' and password='"&strpassword&"'"
rstemp.open sqltemp1,conn, 1, 1
if not(rstemp.bof and rstemp.eof) then
Response.Write (“login=true”)
Else
Response.Write (“login=false”)
end if
%>
6、將Flash檔案和Asp檔案部署到IIS伺服器中,然後開啟Flash檔案,輸入登陸資訊就可以看到執行個體的效果了。