技術(shù) 點(diǎn)
- 技術(shù)
- 點(diǎn)
- V幣
- 點(diǎn)
- 積分
- 67767
|
作者: Javis
簡(jiǎn)介
Macromedia的Flash總是被用來(lái)制作花里胡哨的網(wǎng)站序幕,用戶一般都會(huì)跳過(guò)這一部分。而Flash 5能夠與ASP或其他的由服務(wù)器生成的網(wǎng)頁(yè)進(jìn)行連接。
這篇文章將討論如何將Flash電影與Access數(shù)據(jù)庫(kù)進(jìn)行連接、使用ASP網(wǎng)頁(yè)查詢數(shù)據(jù)庫(kù)并將查詢得到的信息傳遞給Flash電影。我們將通過(guò)創(chuàng)建一個(gè)簡(jiǎn)單的Flash地址簿來(lái)詳細(xì)說(shuō)明這一技術(shù)。
在創(chuàng)建該地址簿時(shí),我們需要下面的工具:Macromedia Flash 5、IIS 4.0或IIS 5.0和微軟的Access數(shù)據(jù)庫(kù)軟件。
基礎(chǔ)知識(shí)
Flash電影不能直接查詢數(shù)據(jù)庫(kù),但它能夠訪問(wèn)ASP網(wǎng)頁(yè),而ASP網(wǎng)頁(yè)能夠查詢數(shù)據(jù)庫(kù)。這就需要用到如下所示的Flash的ActionScript函數(shù)——loadVariables:
loadVariables(URL, location);
loadVariables函數(shù)能夠獲得指定的URL的內(nèi)容,并使用這些內(nèi)容設(shè)置Flash電影中的變量。這些內(nèi)容必須符合MIME格式,例如,如果URL中包含有帶有下列內(nèi)容的網(wǎng)頁(yè):
Var1=Test&Var2=Demo
Flash電影中的變量Var1的值將被設(shè)置為“Test”,變量Var2的值將被設(shè)置為“Demo”。這些變量就可以通過(guò)Flash ActionScript來(lái)改變Flash電影。在我們的例子中,我們將使用這種方法從Access數(shù)據(jù)庫(kù)中通過(guò)ASP網(wǎng)頁(yè)向Flash電影電影中傳輸數(shù)據(jù)。
數(shù)據(jù)庫(kù)設(shè)計(jì)
首先,我們來(lái)創(chuàng)建例子中使用的數(shù)據(jù)庫(kù)。由于我們的地址簿非常地簡(jiǎn)單,因此數(shù)據(jù)庫(kù)中只包含一個(gè)名字為Contacts的數(shù)據(jù)庫(kù)表,該數(shù)據(jù)庫(kù)表有5個(gè)字段:ContactID、Name、Telephone、City和Notes。
數(shù)據(jù)庫(kù)表的名字是AddressBook.mdb,而且與我們下面將要?jiǎng)?chuàng)建的ASP網(wǎng)頁(yè)和SWF文件存儲(chǔ)在同一個(gè)目錄中。(SWF文件是Flash動(dòng)畫(huà)電影的文件格式,目前有90%以上的互聯(lián)網(wǎng)用戶無(wú)須安裝專門(mén)的插件就能夠欣賞SWF格式的內(nèi)容。)
ASP設(shè)計(jì)
下面我們來(lái)討論從地址簿數(shù)據(jù)庫(kù)表中讀取記錄的ASP網(wǎng)頁(yè)代碼:
上面的ASP網(wǎng)頁(yè)代碼能夠從數(shù)據(jù)庫(kù)表中讀取記錄,然后利用Server.URLEncode返回MIME格式的數(shù)據(jù)。
我們的ASP網(wǎng)頁(yè)代碼的典型輸出可能如下所示:
提示:我們從ASP網(wǎng)頁(yè)代碼中多輸出了一些信息(在數(shù)據(jù)庫(kù)表字段之外),TotalRecords是指數(shù)據(jù)庫(kù)字表中現(xiàn)有的記錄數(shù),它能夠使Flash知道是否已經(jīng)處理完了地址簿中的記錄。
我們的ASP網(wǎng)頁(yè)代碼將以GetDetail.asp的文件名與數(shù)據(jù)庫(kù)表和Flash文件存儲(chǔ)在同一個(gè)目錄中。
Flash設(shè)計(jì)
有了數(shù)據(jù)庫(kù)表和ASP網(wǎng)頁(yè)代碼,下面就該設(shè)計(jì)我們的地址簿應(yīng)用的臉面━━Flash電影了。我們首先建立一個(gè)新的電影,并在其中插入一個(gè)空白的電影片斷。
該片斷將被設(shè)計(jì)為我們的地址簿,它將包含有5個(gè)文本字段(用來(lái)顯示我們的信息)和二個(gè)按鈕(用來(lái)瀏覽記錄的左右箭頭)。我們的地址簿如下所示:
文本字段將被創(chuàng)建為動(dòng)態(tài)文本,每個(gè)文本字段將被賦給一個(gè)變量名字,這將使我們能夠在ActionScript中控制它們的內(nèi)容。
我們?cè)谟捌瑪嘀屑尤胍粋(gè)動(dòng)作,使影片加載完畢后,加載輸出內(nèi)容為第一個(gè)記錄的ASP網(wǎng)頁(yè)代碼,實(shí)現(xiàn)這一功能的ActionScript如下所示:
onClipEvent(load)
{
CurrentRecord = 0;
loadVariables ("getdetails.asp?Record=0", this);
}
它只是簡(jiǎn)單地初始化了CurrentRecord變量(我們將使用它保存在地址簿中的位置),然后加載GetDetails.asp網(wǎng)頁(yè)代碼,該代碼會(huì)加載第一個(gè)記錄。
loadVariables函數(shù)的一個(gè)重要特性是它的執(zhí)行方式是異步的。也就是說(shuō),F(xiàn)lash在執(zhí)行完loadVariables命令后,它不會(huì)停下來(lái)等待結(jié)果,數(shù)據(jù)沒(méi)有必要在等待程序找到loadVariables函數(shù)之后的記錄時(shí)才進(jìn)行加載。因此,我們需要一種機(jī)制,讓Flash電影在數(shù)據(jù)加載后更新文本字段。當(dāng)Flash完成變量的加載后,就會(huì)執(zhí)行這一動(dòng)作。實(shí)現(xiàn)該功能的ActionScript代碼:
onClipEvent(data)
{
strName = Name;
strTelephone = Telephone;
strCity = City;
strNotes = Notes;
strPosition = "Record " add String(CurrentRecord+1) add " of " add String(TotalRecords);
}
上面的代碼的作用是將從ASP網(wǎng)頁(yè)代碼中獲取的變量傳輸?shù)皆贔lash電影片斷中添加的文本框中,它還會(huì)更新表明我們正在顯示哪個(gè)記錄的文本字段。
最后,我們還需要給左、右箭頭指定動(dòng)作,這樣才能對(duì)整個(gè)地址簿進(jìn)行操作。下面是右箭頭(移到下一條記錄)的代碼:
on (release)
{
CurrentRecord++;
if (CurrentRecord == TotalRecords)
CurrentRecord = 0;
loadVariables ("getdetails.asp?Record=" add String(CurrentRecord), this);
}
上面的代碼對(duì)CurrentRecord執(zhí)行加1操作,并檢查是否已經(jīng)超過(guò)了地址簿中的最后一個(gè)記錄。如果已經(jīng)超過(guò)了最后一個(gè)記錄,則將CurrentRecord設(shè)置為0,返回地址簿中的第一個(gè)記錄。代碼然后從ASP網(wǎng)頁(yè) |
本帖子中包含更多資源
您需要 登錄 才可以下載或查看,沒(méi)有帳號(hào)?注冊(cè)
x
|