1、基本的通信過(guò)程
圖1 SWF+XML與服務(wù)器的通信過(guò)程示意圖
點(diǎn)擊看大圖
圖1展示的是本例中的通信過(guò)程示意。在 Flash 和數(shù)據(jù)庫(kù)之間傳遞信息的服務(wù)器端腳本以 XML 格式讀寫(xiě)數(shù)據(jù)。
可用 ActionScript 將 SWF 文件中收集到的信息轉(zhuǎn)換成一個(gè) XML 對(duì)象,然后將數(shù)據(jù)作為 XML 文檔發(fā)送到服務(wù)器端腳本。您還可以使用ActionScript 將服務(wù)器返回的 XML 文檔加載到 XML 對(duì)象中,以在 SWF 文件中使用該文檔。其中在本例中,保存相關(guān)的XML數(shù)據(jù)是由服務(wù)器的腳本程序來(lái)完成的,這也是本例的重點(diǎn)學(xué)習(xí)內(nèi)容。
2、flash與ASP間的通信方法
flash與ASP通信之間可以使用多種通信方法,本例中使用了LoadVars對(duì)象。
LoadVars可以通過(guò)使用POST方法提供了一種向服務(wù)器輸送變量。
3、服務(wù)器腳本
服務(wù)器腳本可以由多種程序編寫(xiě),本例中以ASP為例編寫(xiě)相關(guān)的腳本。
Microsoft Active Server Pages (ASP) 是服務(wù)器端腳本編寫(xiě)環(huán)境,使用它可以創(chuàng)建和運(yùn)行動(dòng)態(tài)、交互的 Web服務(wù)器應(yīng)用程序。
編寫(xiě)腳本程序要使用相關(guān)的腳本語(yǔ)言;腳本語(yǔ)言是介于 HTML 和 Java、C++ 和 Visual Basic 之類(lèi)的編程語(yǔ)言 之間的語(yǔ)言。HTML 通常用于格式化文本和鏈接網(wǎng)頁(yè)。編程語(yǔ)言通常用于向計(jì)算機(jī)發(fā)送一系列復(fù)雜指令。腳本語(yǔ)言也可用來(lái)向計(jì)算機(jī)發(fā)送指令,但它們的語(yǔ)法和規(guī)則沒(méi)有可編譯的編程語(yǔ)言那樣嚴(yán)格和復(fù)雜。腳本語(yǔ)言主要用于格式化文本和使用以編程語(yǔ)言編寫(xiě)的已編譯好的組件。
ASP使 Web 開(kāi)發(fā)商用多種腳本語(yǔ)言編寫(xiě)完整的過(guò)程成為可能。事實(shí)上,在單個(gè) .asp 文件內(nèi)部就可以使用多種腳本語(yǔ)言。
我們可以使用任意一種其相應(yīng)的腳本引擎已安裝在 Web 服務(wù)器上的腳本語(yǔ)言。通常使用VBScript和javascript這兩種語(yǔ)言;其中,ASP默認(rèn)的腳本語(yǔ)言為VBScript。本例就用VBScript編寫(xiě)腳本。
下面我們看看具體的實(shí)例制作。
實(shí)例制作:
1、Flash端
首先創(chuàng)建如下界面,捕捉標(biāo)注點(diǎn)的代碼在上一講中已經(jīng)提到,本例只是除了地名名稱(chēng)之外,再增加一些基本的信息,方法雷同,這里就不再重復(fù);最終將需要保存的代碼賦給字符串變量SendData_srt。
圖2 SWF文件界面1
點(diǎn)擊看大圖
圖3 SWF文件界面2
以一個(gè)名為L(zhǎng)ink的變量來(lái)接受來(lái)自服務(wù)器的消息。如果其值為1,表明與服務(wù)器端的通信連接成功。使用
LoadVars,再使用sendAndLoad方法將一個(gè)LoadVars的實(shí)體下的數(shù)據(jù)發(fā)送出去。
打開(kāi)時(shí)間軸的動(dòng)作面板,輸入以下ActionScript代碼:
function SendData():Void { //定義發(fā)送數(shù)據(jù)的函數(shù) var SendData = new LoadVars(); //構(gòu)造一個(gè)新的LoadVars對(duì)象 SendData.Check = 1; //設(shè)定Check的動(dòng)作,用于服務(wù)器驗(yàn)證 SendData.data = SendData_srt; //將待發(fā)送的數(shù)據(jù)變量SendData_srt賦給data output_txt.text = "請(qǐng)稍候……"; //狀態(tài)文本顯示為"請(qǐng)稍候……" SendData.onLoad = function(success) { //驗(yàn)證和服務(wù)器連接的函數(shù) if (success) { //如果和服務(wù)器成功連接 if (this.Link== "1") { //如果驗(yàn)證動(dòng)作成功 output_txt.text = "成功標(biāo)注!審核后即可生效。"; //狀態(tài)文本顯示為成功 } } else { output_txt.text = "服務(wù)器忙,請(qǐng)稍后再試!"; //如果和服務(wù)器連接不成功則返回失敗消 } }; SendData.sendAndLoad("http://www.wanggesz.com/XMLData/Save.asp", SendData, "post"); //以post方式發(fā)送待保存數(shù)據(jù) } |
創(chuàng)建一個(gè)ASP文件,其內(nèi)容如下:
%@Language="VBScript"%> % Dim Check '定義Check變量,用來(lái)驗(yàn)證來(lái)自SWF文件的數(shù)據(jù) Dim Link '定義Link變量,用來(lái)返回給SWF文件,表明通信成功 Dim data '定義data變量,用來(lái)接收來(lái)自SWF文件的待保存數(shù)據(jù) set data = Request.Form("data") '接收來(lái)自SWF文件的待保存數(shù)據(jù) set Check = Request.Form("Check") '驗(yàn)證來(lái)自SWF文件的數(shù)據(jù) if Check = 1 Then '如果SWF文件身份正確 Link = 1 '將Link值設(shè)為1,表明通信成功 End if '結(jié)束if語(yǔ)句 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")) %> |
這樣我們依次完成了對(duì)地圖的操作、地名的標(biāo)注等功能;而在地圖的使用過(guò)程中,用地名名稱(chēng)進(jìn)行查詢(xún)及定位是也一個(gè)必不可少的常用功能。
標(biāo)簽:咸陽(yáng) 泰州 家電維修 麗江 鐵嶺 溫州 昌都 昆明
巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《[圖]Flash+ASP實(shí)現(xiàn)電子互動(dòng)地圖在線(xiàn)標(biāo)注功能》,本文關(guān)鍵詞 圖,Flash+ASP,實(shí)現(xiàn),電子,互動(dòng),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。