|
Flash 的功能已經(jīng)非常強(qiáng)大,完全可以跟其他的服務(wù)器端語言結(jié)合起來,做出適合現(xiàn)在的網(wǎng)絡(luò)應(yīng)用的網(wǎng)站。一個(gè)典型的模式就是Flash 與Asp的結(jié)合使用。其架構(gòu)如圖1所示。 ![]() 圖01 可以把上面的結(jié)構(gòu)看成是三層,F(xiàn)lash是一層,Asp是一層,數(shù)據(jù)庫是一層。對Flash和Asp有點(diǎn)了解的人,只要處理好層與層之間的交互,結(jié)合使用Flash與Asp就決不是什么難事。 一、下面我們就先來看看Flash與Asp之間的交互 Flash與Asp的通訊是用Http協(xié)議,其請求格式為http://ip地址?參數(shù)1=值1&參數(shù)2=值2 即是在目的地址后面加上問號,再跟上參數(shù)字符串,參數(shù)之間用“&”號格開。如: http://www./test.asp?userid=guest&pwd=123 在上面的請求中,請求的目的文件為:http://www./test.asp,第一個(gè)參數(shù)名為userid,值為guest,第二個(gè)參數(shù)名為pwd,值為123。 Flash與Asp之間的交互無非就是構(gòu)造上面的請求字符串。 1、在Flash中,先構(gòu)造好請求的字符串,然后利用函數(shù)LoadVariables(),就可以向服務(wù)器端發(fā)送請求和參數(shù)。我們來詳細(xì)看看LoadVariables()這個(gè)函數(shù)。 函數(shù)的標(biāo)準(zhǔn)格式為loadVariables ("url" ,level/"target" [, variables]) 在函數(shù)的各個(gè)參數(shù)中,url就是上面說的請求字符串。level/“target”是返回值的“層次”或者“目標(biāo)”,這兩個(gè)當(dāng)中只能指定一個(gè)。variables是請求的方式,其值可以是“Get”或者是“Post”,一般Get用于參數(shù)值比較短的傳送,Post用于參數(shù)值比較長的傳送,這個(gè)參數(shù)是可選的。比如loadVariables ("http://www./guest.asp?userid=guest&pwd=123" ,0, “GET”)就是一個(gè)完整的請求。 2、在Asp中,先要取得從Flash端傳送過來的參數(shù),這跟操作普通的HTML表單是一樣的。都是利用Request對象,其語句為: username = Request(“userid”) password = Request(“pwd”) userid和pwd就是從Flash端發(fā)送過來的參數(shù)名,如果是上一步中的請求字符串,username的值為guest,pwd的值為123。 3、在服務(wù)器端處理完請求,獲得所需要的值后,Asp向Flash端發(fā)送結(jié)果,跟從Asp中操作Html語言一樣,都是用Response對象,其語句為: Response.Write(“login=true&des=success”) 其返回值1的名為login,值為true,返回值2的名為des,值為success。 4、在Flash端取得從服務(wù)器端返回的值,與操作Flash中普通的變量沒什么不同。如: _root.gotoAndPlay(eval(login))表示的是跳轉(zhuǎn)到login的值的那一幀。但要注意的是在發(fā)送請求一段時(shí)間之后,才能用返回值,不然取得的是尚未返回的值,錯(cuò)誤就在所難免了,而且這一類的錯(cuò)誤很難發(fā)現(xiàn),用的時(shí)候要多加小心。 二、Asp與數(shù)據(jù)庫之間的交互 在Asp與數(shù)據(jù)庫的交互一般是用ADO控件。其讀取數(shù)據(jù)庫的語句為: ‘定義一個(gè)Connection對象 set conn=Server.CreateObject("ADODB.Connection") ‘用Connection對象打開數(shù)據(jù)庫,這里打開的是sql server,數(shù)據(jù)庫的地址為192.168.1.32 ‘數(shù)據(jù)庫的用戶名為zengyu,密碼為123 conn.open application("Driver={SQL Server};SERVER=192.168.1.32;DATABASE=test;UID=zengyu;PASSWORD=123") ‘創(chuàng)建一個(gè)Recordset對象 set rstemp=Server.CreateObject("ADODB.Recordset") ‘構(gòu)造一個(gè)sql語句 sqltemp1="select * from UserInfo where userid=‘"&strname&"‘ and password=‘"&strpassword&"‘" ‘查詢數(shù)據(jù)庫 rstemp.open sqltemp1,conn, 1, 1 if not(rstemp.bof and rstemp.eof) then Response.Write (“login=true”) end if 這里實(shí)現(xiàn)的只是簡單地查詢數(shù)據(jù)庫,要想了解Asp操作數(shù)據(jù)庫更詳細(xì)的東西,可以找Asp與數(shù)據(jù)庫方面的資料深入學(xué)習(xí)一下。 三、例子――登陸的實(shí)現(xiàn) 下面我們來制作一個(gè)簡單的實(shí)例,在Flash端輸入用戶名和密碼,通過Asp查詢數(shù)據(jù)庫,如果用戶名和密碼正確,就跳轉(zhuǎn)到登陸成功界面,否則就跳轉(zhuǎn)到登陸失敗界面。 1、新建一個(gè)Flash,在場景中制作兩個(gè)文本框和一個(gè)Button,如圖2所示。其中用戶名對應(yīng)的文本框?qū)傩匀鐖D3所示,密碼對應(yīng)的文本框?qū)傩匀鐖D4所示。注意其中的文本類型和變量名。 ![]() 圖02 ![]() 圖03 ![]() 圖04 2、創(chuàng)建另外兩個(gè)關(guān)鍵幀,分別命名為“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數(shù)據(jù)庫(數(shù)據(jù)庫的類型不重要,改一改連接串就可以的)中,建立一張名為“userinfo”的表,其中有“Userid”和“Password”兩個(gè)字段。 5、建立一個(gè)guest.asp文件,文件內(nèi)容為 6、將Flash文件和Asp文件部署到IIS服務(wù)器中,然后打開Flash文件,輸入登陸信息就可以看到實(shí)例的效果了。 |
|
|