虞智輝
無(wú)錫高等師范學(xué)校 江蘇無(wú)錫 214001
隨著Flash技術(shù)的日益發(fā)展,F(xiàn)lash在網(wǎng)頁(yè)開發(fā)上的應(yīng)用可謂層出不窮,但既然是運(yùn)用于網(wǎng)頁(yè)上,那就與網(wǎng)頁(yè)的基本語(yǔ)言HTML息息相關(guān),所以Flash動(dòng)畫與HTML語(yǔ)言的有機(jī)結(jié)合,也成為時(shí)下Flash動(dòng)畫發(fā)展的一個(gè)基本方向。以下是筆者在平時(shí)制作Flash站點(diǎn)時(shí)經(jīng)常要用到的與HTML有關(guān)的實(shí)用技巧,希望能夠?qū)Υ蠹矣幸欢ǖ膸椭?,同時(shí)也希望能拋磚引玉,引起大家對(duì)Flash與Web技術(shù)相結(jié)合的更深入的探討。
在早期的網(wǎng)頁(yè)中,由于技術(shù)的限制,只能看到一些靜態(tài)的文字和圖片。隨著Flash技術(shù)的出現(xiàn),把通過(guò)Flash軟件導(dǎo)出的swf文件或者gif圖片插入網(wǎng)頁(yè)中,這樣網(wǎng)頁(yè)就可以由能夠不斷變化的圖像或者豐富的文字動(dòng)畫效果組成,使網(wǎng)頁(yè)有了初步的動(dòng)畫效果,這就是動(dòng)畫和網(wǎng)頁(yè)的初步結(jié)合。
隨著動(dòng)畫技術(shù)和網(wǎng)頁(yè)編程語(yǔ)言的深入發(fā)展,人們已經(jīng)越來(lái)越不能滿足這樣單向的欣賞,而是希望能在保留動(dòng)畫的同時(shí),和網(wǎng)頁(yè)或者網(wǎng)站有所交流,以達(dá)到自己的某種要求和目的。于是asp、php、jsp等技術(shù)應(yīng)運(yùn)而生。正是在Flash中嵌入了這些動(dòng)態(tài)網(wǎng)頁(yè)語(yǔ)言,不僅保留了網(wǎng)頁(yè)的生動(dòng),而且增添了交互、實(shí)時(shí)、動(dòng)態(tài)解析等新特性。
但是,F(xiàn)lash的動(dòng)態(tài)解析存在一個(gè)問(wèn)題,它用“l(fā)oad()”命令從后臺(tái)服務(wù)器讀取數(shù)據(jù)的時(shí)候不可以使用相對(duì)地址,而必須使用絕對(duì)地址。如要讀取服務(wù)器上show.asp文件時(shí),不能直接寫“l(fā)oad(show.Asp)”,而必須寫“l(fā)oad(http://www.wxgdsf.cn/show.asp)”完整路徑。為什么呢?因?yàn)楫?dāng)Flash播放器接收到“l(fā)oad(show.asp)”命令時(shí),它會(huì)認(rèn)為這是一個(gè)本地文本文件(.txt),于是便不會(huì)經(jīng)過(guò)IIS的運(yùn)行處理而直接讀入Flash內(nèi)部。當(dāng)然,把“.asp”文件讀成“.txt”文件,結(jié)果就是一堆亂碼。而當(dāng)Flash播放器執(zhí)行“l(fā)oad(http://www.wxgdsf.cn/show.asp)”這個(gè)命令的時(shí)候,由于它是一個(gè)HTTP請(qǐng)求,必須要經(jīng)過(guò)IIS的處理,于是Flash player就不會(huì)認(rèn)為它是本地的文本文件了。Flash player把這個(gè)請(qǐng)求發(fā)送到HTTP服務(wù)器,服務(wù)器的IIS解析腳本返回結(jié)果后,F(xiàn)lash播放器便可以正確處理這些數(shù)據(jù)。
雖然只要在語(yǔ)言中輸入正確的HTTP完整路徑,就可以讓Flash player讀取正確的數(shù)據(jù),但是面臨的問(wèn)題是,在進(jìn)行編程開發(fā)或者進(jìn)行程序調(diào)試時(shí),需要經(jīng)常更換計(jì)算機(jī)或者服務(wù)器,以檢測(cè)各種情況的發(fā)生。那就造成一種麻煩,也就是每更換到一個(gè)服務(wù)器上面的時(shí)候,就要修改一次源程序中的HTTP路徑,需要讀取的文件越多,改動(dòng)的次數(shù)也會(huì)相應(yīng)地增加,這樣就給調(diào)試帶來(lái)很大的麻煩。那么如何解決這一問(wèn)題?通過(guò)實(shí)踐研究發(fā)現(xiàn),如果在讀取文件前先讀取地址,或者將地址直接傳遞給Flash player,就可以解決這一問(wèn)題。
思路:1)獲得服務(wù)器地址;2)將服務(wù)器地址保存;3)讀取服務(wù)器地址并賦值給一變量;4)利用asp語(yǔ)言環(huán)境中變量的傳遞方法傳遞服務(wù)器地址。
代碼如下:
<%
Dim PageUrl, URLarry, ApplicationURL, n
PageUrl="http://" & Request.ServerVariables("http_host") & Request.ServerVariables ("url")
URLarry=Split (PageUrl,"/")
Arryubound=ubound (URLarry,1)-1
For n=0 to Arryubound
ApplicationURL=ApplicationURL&URLarry (n) &"/"
NEXT
%>
在swf文件中這樣寫“<%="aa.swf?myurl=”&ApplicationURL%> ”,這樣就可以通過(guò)URL把變量傳遞給swf文件,在Flash影片中便可以直接訪問(wèn)這個(gè)變量。
動(dòng)態(tài)技術(shù)的最大特點(diǎn)就是人機(jī)的一種交流,或者通過(guò)計(jì)算機(jī)成為人們之間的另一種交流通道。有交流,就會(huì)產(chǎn)生大量的信息,有些需要保留,有些需要?jiǎng)h除,有些需要排序,有些需要被檢索,還有一些需要共享,那就引出一個(gè)問(wèn)題:這些數(shù)據(jù)該如何來(lái)管理?于是數(shù)據(jù)庫(kù)技術(shù)就誕生了??梢哉f(shuō)數(shù)據(jù)庫(kù)是網(wǎng)絡(luò)動(dòng)態(tài)技術(shù)的核心。
同樣,隨著Flash動(dòng)畫在網(wǎng)站中的深化運(yùn)用,與數(shù)據(jù)庫(kù)的鏈接已經(jīng)成為一種必然現(xiàn)象。Flash動(dòng)畫與數(shù)據(jù)庫(kù)的鏈接,不但可以使網(wǎng)頁(yè)繼續(xù)保留豐富的動(dòng)態(tài)效果,而且可以保留人們交流的信息,使交流變得更有目的和效率。那么數(shù)據(jù)庫(kù)如何與Flash-Website進(jìn)行鏈接呢?
要知道如何鏈接,首先必須要知道Flash與動(dòng)態(tài)技術(shù)結(jié)合的原理。以基于HTML的asp動(dòng)態(tài)語(yǔ)言為例,F(xiàn)lash和asp接口的原理和純asp文件之間交互的原理是一樣的,簡(jiǎn)單地說(shuō)就是頁(yè)面之間的數(shù)據(jù)交換。知道這一點(diǎn)后,一切就變得簡(jiǎn)單了。
計(jì)算機(jī)中必須裝有IIS環(huán)境,必須支持?jǐn)?shù)據(jù)庫(kù);計(jì)算機(jī)中必須裝有Flash4.0以上版本;要對(duì)asp有初步的了解。
可以利用Access數(shù)據(jù)庫(kù)建立數(shù)據(jù)庫(kù)文件infor.mdb,其包含一個(gè)數(shù)據(jù)表infor1,該數(shù)據(jù)表中包含4個(gè)字段名:編號(hào)(bh)、姓名(xm)、性別(xb)、單位(dw)。
1)在第一關(guān)鍵幀內(nèi)建立一輸入文本框,設(shè)置變量名為bh,在第二關(guān)鍵幀內(nèi)建立3個(gè)動(dòng)態(tài)文本框,分別設(shè)置變量名為xm、xb、dw。效果如圖1、圖2所示。
圖1 第一關(guān)鍵幀
圖2 第二關(guān)鍵幀
2)原理是鼠標(biāo)點(diǎn)擊按鈕后,利用編號(hào)來(lái)獲得該用戶的其余信息。
按鈕的主要程序如下:
On (press) {
Load Variables (“infor.asp”, “”, vars=POST)
Set Variable: “bh” = “”
}
3)利用HTML語(yǔ)言建立網(wǎng)頁(yè)文件infor.asp,并將該動(dòng)畫插入至網(wǎng)頁(yè)中
4)輸入asp程序代碼:
Dim rs, conn
Set rs = Server.CreateObject(“ADODB.Recordset”) //定義rs為RECORDSET對(duì)象
Set conn = Server.CreateObject(“ADODB.Connection”) //定義conn為CONNECTION對(duì)象
conn.open "Driver={Microsoft Access Driver(*.mdb)}; DBQ=" & Server.MapPath("infor.mdb")//建立數(shù)據(jù)庫(kù)引擎
SQL = “SELECT * FROM infor WHERE bh=” &Request. Form(“bh”) & “;”
rs.Open SQL,conn ,1,2 //打開數(shù)據(jù)表
do while not rs.eof
xm=rs (“xm”)
xb=rs (“xb”)
dw=rs (“dw”)
rs.movenext
loop
Response. Write "xm="& Server.URLEncode (rs("xm"))
Response. Write "xb="& Server.URLEncode (rs("xb"))
Response. Write “dw=”& Server.URLEncode(rs(“dw”))//保證返回過(guò)去變量的是按照URL格式編碼的
rs.Close
set rs=nothing
conn.Close
set conn=nothing//清空
以上是筆者在Flash制作時(shí)經(jīng)常用到的2個(gè)技術(shù)。隨著Flash-Website的不斷發(fā)展,F(xiàn)lash技術(shù)與Web技術(shù)越來(lái)越緊密地配合,越來(lái)越多的動(dòng)畫功能將在網(wǎng)站中被加以實(shí)現(xiàn)。相信今后,網(wǎng)頁(yè)將不單是技術(shù)發(fā)展的體現(xiàn),更是綜合技術(shù)的平臺(tái)。
[1]周峰,王征.FLASH ACTIONSCRIPT 3.0網(wǎng)絡(luò)動(dòng)畫編程基礎(chǔ)與實(shí)踐教程[M].北京:電子工業(yè)出版社,2008
[2]林紀(jì)河,祁玉芹.FLASH CS4網(wǎng)絡(luò)動(dòng)畫制作簡(jiǎn)明教程[M].北京:電子工業(yè)出版社,2009
[3]童罕,吳慶波,等.一種動(dòng)態(tài)網(wǎng)頁(yè)加速技術(shù)中的機(jī)制探討[J].微計(jì)算機(jī)信息,2009(27)
[4]崔俊杰.動(dòng)態(tài)網(wǎng)頁(yè)技術(shù)淺析[J].長(zhǎng)沙民政職業(yè)技術(shù)學(xué)院學(xué)報(bào),2006,13(13)
[5]李志勇,徐長(zhǎng)通.基于ASP的WEB數(shù)據(jù)庫(kù)智能查詢[J].河南師范大學(xué)學(xué)報(bào),2010,38(1)