1、基本的通訊過程
圖1 SWF+XML與伺服器的通訊流程示意圖點擊看大圖
圖1展示的是本例中的通訊過程示意。在Flash 和資料庫之間傳遞訊息的伺服器端腳本以XML 格式讀寫資料。
可用ActionScript 將SWF 檔案中收集到的信息轉換成一個XML 對象,然後將資料作為XML 文件傳送到伺服器端腳本。您也可以使用ActionScript 將伺服器傳回的XML 文件載入到XML 物件中,以在SWF 檔案中使用該文件。其中在本例中,保存相關的XML資料是由伺服器的腳本程式來完成的,這也是本例的重點學習內容。
2.flash與ASP間的通訊方法
flash與ASP通訊之間可以使用多種通訊方法,本例中使用了LoadVars物件。
LoadVars可以透過使用POST方法提供了一種向伺服器輸送變數。
3.伺服器腳本伺服器
腳本可以由多種程式編寫,本例以ASP為例編寫相關的腳本。
Microsoft Active Server Pages (ASP) 是一個伺服器端腳本編寫環境,使用它可以建立和執行動態、互動的Web伺服器應用程式。
編寫腳本程式要使用相關的腳本語言;腳本語言是介於HTML 和Java、C++ 和Visual Basic 之類的程式語言之間的語言。 HTML 通常用於格式化文字和連結網頁。程式語言通常用於向電腦發送一系列複雜指令。腳本語言也可用於向電腦發送指令,但它們的語法和規則沒有可編譯的程式語言那麼嚴格和複雜。腳本語言主要用於格式化文字和使用以程式語言編寫的已編譯好的元件。
ASP使Web 開發人員用多種腳本語言編寫完整的過程成為可能。事實上,在單一.asp 檔案內部就可以使用多種腳本語言。
我們可以使用任何一種其對應的腳本引擎已安裝在Web 伺服器上的腳本語言。通常使用VBScript和JavaScript這兩種語言;其中,ASP預設的腳本語言為VBScript。本例就用VBScript編寫腳本。
下面我們來看看具體的實例製作。
實例製作:
1、Flash端
首先創建如下介面,捕捉標註點的程式碼在上一講中已經提到,本例只是除了地名名稱之外,再增加一些基本的信息,方法雷同,這裡就不再重複;最終將需要保存的代碼賦給字串變數SendData_srt。
圖2 SWF檔案介面1
點擊看大圖
圖3 SWF檔案介面2
以一個名為Link的變數來接受來自伺服器的訊息。如果其值為1,表示與伺服器端的通訊連線成功。使用
LoadVars,再使用sendAndLoad方法將一個LoadVars的實體下的資料傳送出去。
開啟時間軸的動作面板,輸入以下ActionScript代碼:
function SendData():Void { //定義傳送資料的函式 var SendData = new LoadVars(); //建構一個新的LoadVars物件 SendData.Check = 1; //設定Check的動作,用於伺服器驗證 SendData. data = SendData_srt; //將待傳送的資料變數SendData_srt賦給data output_txt.text = "請稍候…"; //狀態文字顯示為"請稍候…" SendData.onLoad = function(success) { //驗證和伺服器連接的函數 if (success) { //如果和伺服器成功連接 if (this.Link== "1") { //如果驗證動作成功 output_txt.text = "成功標註!審核後即可生效 。 "http://www.wanggesz.com/XMLData/Save.asp", SendData, "post"); //以post方式傳送待儲存資料 } |
建立一個ASP文件,其內容如下:
<%@Language="VBScript"%> <% Dim Check '定義Check變量,用來驗證來自SWF文件的資料 Dim Link '定義Link變量,用來返回給SWF文件,表明通信成功 Dim data '定義data變量,用來接收來自SWF文件的待保存數據 set data = Request.Form("data") '接收來自SWF文件的待保存數據 set Check = Request.Form("Check") '驗證來自SWF檔案的資料 if Check = 1 Then '如果SWF檔案身分正確 Link = 1 '將Link值設為1,表示通訊成功 End if '結束if語句 xml.Async=False xml.ValidateOnParse=False xml.Load(server.mapPath("http://www.wanggesz.com/XMLData/data.xml")) set newNode=mxml.createNode ("element", "data", "") root.appendChild(newNode) Set objname = mxml.createAttribute("data") xml.save(server.mapPath("http://www.wanggesz.com/XMLData/data.xml")) %> |
這樣我們依序完成了對地圖的操作、地名的標註等功能;而在地圖的使用過程中,用地名名稱進行查詢及定位是也一個必不可少的常用功能。