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

現在,ASP.NET 能夠將該
id 值傳遞至 .NET 業務組件。下面的示例用來檢索用戶的
name 和
age:

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

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

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

以上代碼進行如下操作:
- 接收從 Flash 客戶端發送的 XML。(xmlDoc.Load(Request.InputStream))
- 解析接收的 XML,并將其傳遞至業務組件,從而插入數據庫。
- 構成將其傳遞回 Flash 客戶端的 XML 消息。相應地處理業務層中產生的 Success 和 Exception 條件,并將其轉換為相應的 XML 消息傳遞回 Flash 客戶端。Flash 客戶端接收這些 XML 消息并相應地顯示出
以下是一些技術文章:
傳統網絡程序的開發是基于頁面的、服務器端數據傳遞的模式,把網絡程序的表示層建立于HTML頁面之上,而HTML是適合于文本的,傳統的基于頁面的系統已經漸漸不能滿足網絡瀏覽者的更高的、全方位的體驗要求了,這就是被Macromedia公司稱之為的“體驗問題”("Experience Matters"),而豐富互聯網應用程序(Rich Internet Applications,縮寫為RIA)的出現也就是為了解決這個問題。
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 整合開發工具包下載
http://www.cnblogs.com/MarkStudio/archive/2005/06/26/181370.html
為flash構建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相相關工具下載收集
http://www.netbei.com/Article/pic/Flash/flash8/200409/2492.html
flash數據開發教程
http://download.macromedia.com/pub/documentation/cn/flash/mx2004/data_tutorials.pdf