|
在Flash電影中訪問Access數(shù)據(jù)庫 |
|
[ 通信界 | eliu通信網(wǎng) | m.k-94.cn | 2004/6/1 ]
|
|
|
|
|
|
|
簡介
Macromedia的Flash總是被用來制作花里胡哨的網(wǎng)站序幕,用戶一般都會跳過這一部分。而Flash 5能夠與ASP或其他的由服務(wù)器生成的網(wǎng)頁進(jìn)行連接。 這篇文章將討論如何將Flash電影與Access數(shù)據(jù)庫進(jìn)行連接、使用ASP網(wǎng)頁查詢數(shù)據(jù)庫并將查詢得到的信息傳遞給Flash電影。我們將通過創(chuàng)建一個簡單的Flash地址簿來詳細(xì)說明這一技術(shù)。 在創(chuàng)建該地址簿時,我們需要下面的工具:Macromedia Flash 5、IIS 4.0或IIS 5.0和微軟的Access數(shù)據(jù)庫軟件。 基礎(chǔ)知識 Flash電影不能直接查詢數(shù)據(jù)庫,但它能夠訪問ASP網(wǎng)頁,而ASP網(wǎng)頁能夠查詢數(shù)據(jù)庫。這就需要用到如下所示的Flash的ActionScript函數(shù)——loadVariables: loadVariables(URL, location); loadVariables函數(shù)能夠獲得指定的URL的內(nèi)容,并使用這些內(nèi)容設(shè)置Flash電影中的變量。這些內(nèi)容必須符合MIME格式,例如,如果URL中包含有帶有下列內(nèi)容的網(wǎng)頁: Var1=Test&Var2=Demo Flash電影中的變量Var1的值將被設(shè)置為“Test”,變量Var2的值將被設(shè)置為“Demo”。這些變量就可以通過Flash ActionScript來改變Flash電影。在我們的例子中,我們將使用這種方法從Access數(shù)據(jù)庫中通過ASP網(wǎng)頁向Flash電影電影中傳輸數(shù)據(jù)。 數(shù)據(jù)庫設(shè)計 首先,我們來創(chuàng)建例子中使用的數(shù)據(jù)庫。由于我們的地址簿非常地簡單,因此數(shù)據(jù)庫中只包含一個名字為Contacts的數(shù)據(jù)庫表,該數(shù)據(jù)庫表有5個字段:ContactID、Name、Telephone、City和Notes! 數(shù)據(jù)庫表的名字是AddressBook.mdb,而且與我們下面將要創(chuàng)建的ASP網(wǎng)頁和SWF文件存儲在同一個目錄中。(SWF文件是Flash動畫電影的文件格式,目前有90%以上的互聯(lián)網(wǎng)用戶無須安裝專門的插件就能夠欣賞SWF格式的內(nèi)容。) ASP設(shè)計 下面我們來討論從地址簿數(shù)據(jù)庫表中讀取記錄的ASP網(wǎng)頁代碼: 上面的ASP網(wǎng)頁代碼能夠從數(shù)據(jù)庫表中讀取記錄,然后利用Server.URLEncode返回MIME格式的數(shù)據(jù)。 我們的ASP網(wǎng)頁代碼的典型輸出可能如下所示: 提示:我們從ASP網(wǎng)頁代碼中多輸出了一些信息(在數(shù)據(jù)庫表字段之外),TotalRecords是指數(shù)據(jù)庫字表中現(xiàn)有的記錄數(shù),它能夠使Flash知道是否已經(jīng)處理完了地址簿中的記錄。 我們的ASP網(wǎng)頁代碼將以GetDetail.asp的文件名與數(shù)據(jù)庫表和Flash文件存儲在同一個目錄中。 Flash設(shè)計 有了數(shù)據(jù)庫表和ASP網(wǎng)頁代碼,下面就該設(shè)計我們的地址簿應(yīng)用的臉面━━Flash電影了。我們首先建立一個新的電影,并在其中插入一個空白的電影片斷。 該片斷將被設(shè)計為我們的地址簿,它將包含有5個文本字段(用來顯示我們的信息)和二個按鈕(用來瀏覽記錄的左右箭頭)。我們的地址簿如下所示: 文本字段將被創(chuàng)建為動態(tài)文本,每個文本字段將被賦給一個變量名字,這將使我們能夠在ActionScript中控制它們的內(nèi)容。 我們在影片片斷中加入一個動作,使影片加載完畢后,加載輸出內(nèi)容為第一個記錄的ASP網(wǎng)頁代碼,實(shí)現(xiàn)這一功能的ActionScript如下所示: onClipEvent(load) { CurrentRecord = 0; loadVariables ("getdetails.asp?Record=0", this); } 它只是簡單地初始化了CurrentRecord變量(我們將使用它保存在地址簿中的位置),然后加載GetDetails.asp網(wǎng)頁代碼,該代碼會加載第一個記錄。 loadVariables函數(shù)的一個重要特性是它的執(zhí)行方式是異步的。也就是說,F(xiàn)lash在執(zhí)行完loadVariables命令后,它不會停下來等待結(jié)果,數(shù)據(jù)沒有必要在等待程序找到loadVariables函數(shù)之后的記錄時才進(jìn)行加載。因此,我們需要一種機(jī)制,讓Flash電影在數(shù)據(jù)加載后更新文本字段。當(dāng)Flash完成變量的加載后,就會執(zhí)行這一動作。實(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)頁代碼中獲取的變量傳輸?shù)皆贔lash電影片斷中添加的文本框中,它還會更新表明我們正在顯示哪個記錄的文本字段。 最后,我們還需要給左、右箭頭指定動作,這樣才能對整個地址簿進(jìn)行操作。下面是右箭頭(移到下一條記錄)的代碼: on (release) { CurrentRecord++; if (CurrentRecord == TotalRecords) CurrentRecord = 0; loadVariables ("getdetails.asp?Record=" add String(CurrentRecord), this); } 上面的代碼對CurrentRecord執(zhí)行加1操作,并檢查是否已經(jīng)超過了地址簿中的最后一個記錄。如果已經(jīng)超過了最后一個記錄,則將CurrentRecord設(shè)置為0,返回地址簿中的第一個記錄。代碼然后從ASP網(wǎng)頁中加載與記錄相關(guān)的變量,記錄加載后,F(xiàn)lash將再次調(diào)用onClipEvent(data),更新我們看到的文本框。 左箭頭(移到前一個記錄)的代碼與上面的代碼基本上相同,但它將對CurrentRecord執(zhí)行減1操作。 至此,我們就全部完成了地址簿應(yīng)用的設(shè)計工作。從瀏覽器中執(zhí)行SWF文件后,它就會將第一個記錄加載到Flash變量中(在onClipEvent(load)動作中),onClipEvent(load)就會更新向我們顯示信息的文本字符框。 點(diǎn)擊任何一個導(dǎo)航按鈕將會觸發(fā)訪問ASP網(wǎng)頁代碼、加載新記錄的動作,然后就會執(zhí)行onClipEvent(data)動作。下面是完成后的地址簿應(yīng)用: 結(jié)束語 通過結(jié)合使用Flash和ASP,我們能夠創(chuàng)建綜合了Flash的圖形功能和ASP的數(shù)據(jù)訪問功能的解決方案。在本篇文章中,我們通過一個例子演示了如何將Flash電影與Access進(jìn)行連接的技術(shù)。對其中的ASP代碼進(jìn)行適當(dāng)?shù)男薷,我們就能夠(qū)lash與SQL server或其他的數(shù)據(jù)庫進(jìn)行連接。 |
1作者:eliu通信網(wǎng) 來源:eliu通信網(wǎng) 編輯:顧北 |
|
|
|
|
|
聲明:①凡本網(wǎng)注明“來源:通信界”的內(nèi)容,版權(quán)均屬于通信界,未經(jīng)允許禁止轉(zhuǎn)載、摘編,違者必究。經(jīng)授權(quán)可轉(zhuǎn)載,須保持轉(zhuǎn)載文章、圖像、音視頻的完整性,并完整標(biāo)注作者信息并注明“來源:通信界”。②凡本網(wǎng)注明“來源:XXX(非通信界)”的內(nèi)容,均轉(zhuǎn)載自其它媒體,轉(zhuǎn)載目的在于傳遞更多行業(yè)信息,僅代表作者本人觀點(diǎn),與本網(wǎng)無關(guān)。本網(wǎng)對文中陳述、觀點(diǎn)判斷保持中立,不對所包含內(nèi)容的準(zhǔn)確性、可靠性或完整性提供任何明示或暗示的保證。請讀者僅作參考,并請自行承擔(dān)全部責(zé)任。③如因內(nèi)容涉及版權(quán)和其它問題,請自發(fā)布之日起30日內(nèi)與本網(wǎng)聯(lián)系,我們將在第一時間刪除內(nèi)容。 |
|
|
|
|
|
|
|
|
|
|