Macromedia Flash* 已廣泛應(yīng)用于互聯(lián)網(wǎng),它能夠增強(qiáng)網(wǎng)站的展示內(nèi)容。Macromedia Flash的最新版本已明確顯示了,Macromedia 公司非常重視使 Flash 成為 Web 應(yīng)用開發(fā)的一種理想界面選擇。作為界面,F(xiàn)lash 是一個(gè)功能強(qiáng)大的選擇;然而,它不能取代業(yè)務(wù)邏輯、查詢管理以及安全性。為增強(qiáng)性能和企業(yè)能力,您需要使用 .NET*。對于 Web 開發(fā)人員而言,具備強(qiáng)大演示支持的 Flash 與微軟公司的 .NET 技術(shù)能夠進(jìn)行有效的結(jié)合。
Flash 帶有 ActionScript*(一種腳本語言),能為電影添加交互能力。最初在 Flash 5 中引入 ActionScript 時(shí),Macromedia 公司就將其從簡單的腳本語言發(fā)展成為一種帶有可靠但有限的編程特性的腳本語言。在 Flash MX 2004 中,Macromedia 公司引入了 ActionScript 2.0,該腳本語言支持以全新的能力和方式構(gòu)建并處理代碼。為了充分理解本文內(nèi)容,您需要首先閱讀并理解用于創(chuàng)建一個(gè) Flash 站點(diǎn)的
ActionScript 基礎(chǔ)知識 
*。
將 Flash 與外部數(shù)據(jù)相連
有三種方法可以將外部數(shù)據(jù)與 Flash 電影連接在一起:FlashVars、 LoadVars 以及全新的 FlashRemoting 技術(shù)。其中最簡單的方法是利用 FlashVars 傳遞代碼 HTML 部分中的變量,將外部數(shù)據(jù)從一個(gè) .aspx 頁面?zhèn)鬟f至 Web 頁面中嵌入的 Flash 電影。利用 FlashVars 設(shè)置的變量值可在 Flash 電影的根級別上使用。必須在 OBJECT 和 EMBED 標(biāo)簽中為 FlashVars 屬性賦值,這是為了確保它能在所有的瀏覽器中使用。
以下代碼顯示的是使用 OBJECT 標(biāo)簽的 FlashVars
<PARAMName="FlashVars"Value="init=yes&check=true">
以下顯示的是使用 EMBED 標(biāo)簽的 FlashVars
<EMBEDsrc="test.swf"FlashVars="init=yes&check=true"></EMBED>
欲了解更多關(guān)于 FlashVars 的知識,請參閱 Macromedia 公司的文章:
http://www.macromedia.com/cfusion/knowledgebase/index.cfm?id=tn_16417
*
讓 Flash 與數(shù)據(jù)庫通信
Flash 不能直接訪問數(shù)據(jù)庫。但是,F(xiàn)lash 可通過任意服務(wù)器端技術(shù)(如 ASP 或 ASP.NET)與數(shù)據(jù)庫進(jìn)行通信。有幾種方法可實(shí)現(xiàn)該操作。在本文中,我們將討論
LoadVariables 方法和
sendAndLoad 方法。
利用來自電影剪輯的 loadVariables 方法電影剪輯的
loadVariables 方法從外部文件或 URL 中讀出數(shù)據(jù),并為電影剪輯的變量設(shè)置值。當(dāng)電影剪輯完成初始化后,啟動(dòng)電影剪輯
onClipEvent 事件處理程序的
load 活動(dòng)。當(dāng)啟動(dòng)電影剪輯時(shí),能夠調(diào)用
loadVariables 方法來加載變量。
loadVariables 方法為異步調(diào)用,F(xiàn)lash 不會等待調(diào)用的結(jié)果。當(dāng)在
loadVariables() 活動(dòng)中接收數(shù)據(jù)時(shí),會啟動(dòng)電影剪輯
onClipEvent 事件處理程序的
data 活動(dòng)。
為了演示如何使用該方法,下面的示例根據(jù) Flash 電影中選擇的 ID,從數(shù)據(jù)庫中檢索用戶的姓名和年齡。在下圖的代碼中,使用電影的
loadVariables 方法,將數(shù)據(jù)從 .aspx 頁面(
getUserData.aspx)加載至電影剪輯中。ActionScript 將用戶的
id 作為查詢字符串傳遞至.aspx 頁面,由此在 Flash 電影中顯示出對應(yīng)
id 的
name 和
age。
getUserData.aspx 頁面從查詢字符串中獲取
id 值,如下圖所示:

現(xiàn)在,ASP.NET 能夠?qū)⒃?
id 值傳遞至 .NET 業(yè)務(wù)組件。下面的示例用來檢索用戶的
name 和
age:

如本節(jié)開始所述,當(dāng)在
loadVariables() 活動(dòng)中接收數(shù)據(jù)時(shí),啟動(dòng)電影剪輯
onClipEvent 事件處理程序的
data 活動(dòng)。在 Flash 電影中聲明以下動(dòng)態(tài)變量:
flashName 和
flashAge。下圖顯示 Flash 電影的事件
onClipEvent 處理程序使用的 ActionScript 代碼,來檢索從 .aspx 頁面返回的值。
注意:非常重要的一點(diǎn)是,在 Flash 電影中存取的變量與在 .aspx 頁面中設(shè)置的變量是相同的。在此處演示的示例中,F(xiàn)lash 電影中存取的變量值為“
name”,該值與在 .aspx 頁面(
Response.Write(“name=” & User.name) )中設(shè)置的值相同。

現(xiàn)在,可將這些值應(yīng)用于 Flash 電影中。
使用電影剪輯的 sendAndLoad 方法在當(dāng)今的互聯(lián)網(wǎng)中,XML 作為通用轉(zhuǎn)換格式,支持不同種類的應(yīng)用平穩(wěn)地交換數(shù)據(jù),它實(shí)現(xiàn)了其作為文檔系統(tǒng)的盡可能多的承諾。XML 提供一個(gè)網(wǎng)關(guān),用于在應(yīng)用(甚至在顯著不同的系統(tǒng)上)之間進(jìn)行通信。當(dāng)應(yīng)用能夠共享數(shù)據(jù)(通過 HTTP(超文本傳輸協(xié)議)、文件共享或其它機(jī)制)并具有 XML 解析器的時(shí)候,則這些應(yīng)用可共享易于處理的結(jié)構(gòu)化信息。
Flash MX 支持 XML Data Transfer(數(shù)據(jù)傳輸),并具有幾種與服務(wù)器技術(shù)(如 ASP* 和 ASP.NET)交換 XML 的方式。Flash MX 能夠利用 XML 類(
load、
send 和
sendAndLoad)或 Flash MX 的新型
XMLConnector 發(fā)送和接收 XML 數(shù)據(jù)包。通過 HTTP 并將數(shù)據(jù)包捆綁至 Flash 中 UI 組件的方式,
XMLConnector 可用來發(fā)送和接收這些數(shù)據(jù)包。
本節(jié)討論 Flash XML 對象的
sendAndLoad 方法。在 XML 數(shù)據(jù)通信、異常處理以及性能有關(guān)的架構(gòu)方面,這是一種首選的方法。我們使用如下簡單的示例:從 Flash 客戶端中,將用戶的得分情況記入數(shù)據(jù)庫,并將“通過”或“未通過”的消息返回 Flash 客戶端。
在 Flash 中創(chuàng)建一個(gè) XML 包能夠輕松地在 Flash 中創(chuàng)建 XML 數(shù)據(jù)包,如下所示:
var sendXML:XML = new XML(“<userid>123456</userid>”);發(fā)送一個(gè) XML 包至“服務(wù)器端”頁面,該頁面利用 ASP/ASP.NET,并處理返回的 XML 數(shù)據(jù)包。使用:
xmlObject.sendAndLoad (URL: String, targetXMLObject: XML): Void
‘xmlObject’ 為 XML 對象實(shí)例,該實(shí)例對需要傳遞至 .aspx 頁面的 XML 進(jìn)行壓縮。
‘URL’ 為指定 XML 對象的目標(biāo) URL。
‘targetXMLObject’ 為從服務(wù)器接收返回信息的 XML 對象。
sendAndLoad 方法是這樣一個(gè)工作方式:發(fā)送 XML 包至服務(wù)器端模板,并接收 XML 包作為響應(yīng),該方法不同于 XML 類的 send方法,后者僅發(fā)送 XML 包,并不作出任何種類的響應(yīng)。每種方法在各自的方式下工作都非常有效,但它們之間有一個(gè)顯著的區(qū)別:XML 類 send 方法將目標(biāo) XML 包作為參數(shù),允許您打開一個(gè)新的瀏覽器窗口或替換當(dāng)前的瀏覽器窗口中的內(nèi)容,而 sendAndLoad 方法雖然將目標(biāo) XML 包作為參數(shù),但不能啟動(dòng)新的瀏覽器窗口。因?yàn)?send 方法打開一個(gè)新的瀏覽器窗口,我們可以看到瀏覽器窗口自身的輸出情況,這對于調(diào)試可能會非常有用。
注意: 如果調(diào)用 sendAndLoad 的 Flash 文件正運(yùn)行于 Web 瀏覽器,那么,目標(biāo) URL 應(yīng)該與 Flash 電影位于相同的域中。如果您仍需與不同域中的應(yīng)用進(jìn)行通信,則請?jiān)?a target=_blank>www.macromedia.com
* 的“跨域數(shù)據(jù)加載(Cross Domain Data Loading)”中查看更多的信息。
下圖顯示了如何使用 XML 對象的 sendAndLoad 方法與一個(gè) .aspx 頁面進(jìn)行通信,以及如何處理從服務(wù)器返回的 XML:

以上代碼進(jìn)行如下操作:
- 將 XML 字符串加載至 XML 對象“userscore_xml”中。該實(shí)例保留將發(fā)送至遠(yuǎn)程服務(wù)器端 ASP.NET 頁面的 XML。
- 為 XML 對象“ResponseXMLObj_xml”設(shè)置 ignoreWhite 的屬性。該 XML 對象實(shí)例保留從服務(wù)器返回的 XML 包。
- 調(diào)用 XML 對象(“userscore_xml”)的 sendAndLoad 方法來發(fā)送 XML 至服務(wù)器端 .aspx 頁面(http://localhost/MyTestApp/scoring.aspx)并將返回的 XML 包存儲至 XML 對象實(shí)例“ResponseXMLObj_xml”中。
- 設(shè)置 XML 對象“ResponseXMLObj_xml”的 onLoad 方法。Flash 接收從服務(wù)器端 .aspx 頁面返回的 XML 響應(yīng),該 XML 響應(yīng)在 XML 對象的 onLoad 方法中進(jìn)行處理。
接著,該方法對接收的 XML 包進(jìn)行解析,以便在 Flash 客戶端顯示出必要的消息。
接收從 ASPX 頁面中的 Flash 發(fā)出的 XML 包下圖顯示了實(shí)現(xiàn)這一操作的代碼:

以上代碼進(jìn)行如下操作:
- 接收從 Flash 客戶端發(fā)送的 XML。(xmlDoc.Load(Request.InputStream))
- 解析接收的 XML,并將其傳遞至業(yè)務(wù)組件,從而插入數(shù)據(jù)庫。
- 構(gòu)成將其傳遞回 Flash 客戶端的 XML 消息。相應(yīng)地處理業(yè)務(wù)層中產(chǎn)生的 Success 和 Exception 條件,并將其轉(zhuǎn)換為相應(yīng)的 XML 消息傳遞回 Flash 客戶端。Flash 客戶端接收這些 XML 消息并相應(yīng)地顯示出
以下是一些技術(shù)文章:
傳統(tǒng)網(wǎng)絡(luò)程序的開發(fā)是基于頁面的、服務(wù)器端數(shù)據(jù)傳遞的模式,把網(wǎng)絡(luò)程序的表示層建立于HTML頁面之上,而HTML是適合于文本的,傳統(tǒng)的基于頁面的系統(tǒng)已經(jīng)漸漸不能滿足網(wǎng)絡(luò)瀏覽者的更高的、全方位的體驗(yàn)要求了,這就是被Macromedia公司稱之為的“體驗(yàn)問題”("Experience Matters"),而豐富互聯(lián)網(wǎng)應(yīng)用程序(Rich Internet Applications,縮寫為RIA)的出現(xiàn)也就是為了解決這個(gè)問題。
http://www.flash-db.com/Board/index.php
http://www.capescience.com/
Consuming Amazon with Flash Remoting
http://www.oreillynet.com/pub/a/javascript/2003/01/09/flash.html
JS/Flash 整合開發(fā)工具包下載
http://www.cnblogs.com/MarkStudio/archive/2005/06/26/181370.html
為flash構(gòu)建asp.net Webservice
http://www.blueidea.com/tech/multimedia/2003/1094.asp
ASP.NET Topic Center
http://www.macromedia.com/devnet/dotnet/
FLEX,Central,AS 2.0,MXML,SWC,
http://blog.joycode.com/eric/category/379.aspx
FLEX
http://www.macromedia.com/cn/software/flex/
flash組件體系
http://www.cahf.net.cn/blog/library/component/Help/
flash MX 2004 PRO+COLDFUSION+PHP+MYSQL PROVECT
http://www.cahf.net.cn/blog/library/
7yue Weblog
http://www.7yue.com/
RIA演示
http://www.macromedia.com/resources/business/rich_internet_apps/overview/
flashanywhere
http://www.flashanywhere.net/mxna/
Flash MX 2004及RIA相相關(guān)工具下載收集
http://www.netbei.com/Article/pic/Flash/flash8/200409/2492.html
flash數(shù)據(jù)開發(fā)教程
http://download.macromedia.com/pub/documentation/cn/flash/mx2004/data_tutorials.pdf