張忠華,朱云云,李紅巖
哈爾濱醫(yī)科大學(xué)大慶校區(qū),黑龍江 大慶 163319
Flash是MacroMedia公司專為網(wǎng)絡(luò)應(yīng)用設(shè)計(jì)的一個(gè)交互性矢量動(dòng)畫(huà)設(shè)計(jì)軟件[1],憑借其簡(jiǎn)單易學(xué)、生成文件體積小、有豐富的多媒體表現(xiàn)以及強(qiáng)大的交互性控制等特點(diǎn),在網(wǎng)絡(luò)開(kāi)發(fā)和動(dòng)畫(huà)設(shè)計(jì)領(lǐng)域一直占據(jù)著重要的一席之地。但其在數(shù)據(jù)庫(kù)應(yīng)用方面的表現(xiàn)卻不盡如人意,功能相對(duì)簡(jiǎn)單,局限性很強(qiáng),這是制約Flash向更加復(fù)雜應(yīng)用方向發(fā)展的一個(gè)技術(shù)瓶頸。隨著軟件技術(shù)的不斷更新,F(xiàn)lash CS3及以上版本支持的ActionScript 3.0具備豐富的SDK資源、規(guī)范化的代碼編寫方式、跨平臺(tái)和廣泛的用戶群體,使得Flash在交互性等方面越來(lái)越強(qiáng)大[2]。目前,F(xiàn)lash可以通過(guò)多種中間語(yǔ)言,實(shí)現(xiàn)與數(shù)據(jù)庫(kù)的連接通信,從而實(shí)現(xiàn)在客戶端Flash動(dòng)畫(huà)的酷而炫的效果。然而,通過(guò)數(shù)據(jù)庫(kù)數(shù)據(jù)來(lái)控制Flash動(dòng)畫(huà),體現(xiàn)數(shù)據(jù)庫(kù)中數(shù)據(jù)的特征,還沒(méi)有很好的技術(shù)方法。所以,該課題的研究目的就是在Flash平臺(tái)上,以ASP為“中介”,通過(guò)編寫ActionScript腳本語(yǔ)言,實(shí)現(xiàn)對(duì)Access數(shù)據(jù)庫(kù)的管理與應(yīng)用,并通過(guò)數(shù)據(jù)庫(kù)數(shù)據(jù)實(shí)時(shí)控制Flash動(dòng)畫(huà),從而實(shí)現(xiàn)在多媒體教學(xué)、醫(yī)學(xué)物理等研究方面復(fù)雜現(xiàn)象的模擬、疾病統(tǒng)計(jì)、仿真實(shí)驗(yàn)等領(lǐng)域的應(yīng)用。
ASP(active server page)是Microsoft公司推出的一種基于服務(wù)器端的腳本編程語(yǔ)言,它很容易和數(shù)據(jù)庫(kù)連接[3],加上Flash對(duì)ASP具有很好的兼容性,能夠直接調(diào)用ASP文件,實(shí)現(xiàn)Flash對(duì)數(shù)據(jù)庫(kù)讀取、寫入和修改的功能。要使用ASP實(shí)現(xiàn)Flash和數(shù)據(jù)庫(kù)聯(lián)接,就要實(shí)現(xiàn)雙向的數(shù)據(jù)傳輸,既能夠?qū)懭霐?shù)據(jù),又能夠讀取數(shù)據(jù)[4]。這樣,F(xiàn)lash與數(shù)據(jù)庫(kù)的連接可看成是三層架構(gòu):Flash是應(yīng)用層,ASP是連接層,數(shù)據(jù)庫(kù)是底層[5]。借助ASP,實(shí)現(xiàn)Flash與數(shù)據(jù)庫(kù)通信,其基本原理如圖1所示[6]。
圖1 Flash與數(shù)據(jù)庫(kù)通信原理
首先,在Access中建立名為cancerdata的數(shù)據(jù)庫(kù),在cancerdata中新建diseaseinfo表,用于記錄統(tǒng)計(jì)數(shù)據(jù),有三個(gè)字段,分別為主鍵id(自動(dòng)編號(hào)),年份dyear和發(fā)病數(shù)disdata。
接下來(lái)利用ASP讀取數(shù)據(jù)庫(kù),在ASP中,用來(lái)存取數(shù)據(jù)庫(kù)的對(duì)象統(tǒng)稱ADO(active data objects),主要含有三種對(duì)象:Connection、Recordset、Command。其中Connection負(fù)責(zé)打開(kāi)或連接數(shù)據(jù),Recordset負(fù)責(zé)存取數(shù)據(jù)表,Command負(fù)責(zé)對(duì)數(shù)據(jù)庫(kù)執(zhí)行行動(dòng)查詢命令,連接各數(shù)據(jù)庫(kù)的驅(qū)動(dòng)程序;連接各數(shù)據(jù)庫(kù)可以使用驅(qū)動(dòng)程序(OLEDB),相對(duì)來(lái)說(shuō)使用OLEDB較為方便、簡(jiǎn)單,當(dāng)然也可以使用數(shù)據(jù)源(ODBC)。ASP與ADO的充分結(jié)合,提供了強(qiáng)大的數(shù)據(jù)庫(kù)訪問(wèn)功能,使之成為進(jìn)行網(wǎng)上數(shù)據(jù)庫(kù)管理的重要手段[7]。為了便于與Flash通信,在這里把從cancerdata數(shù)據(jù)庫(kù)里讀取的數(shù)據(jù)以XML格式顯示在ASP頁(yè)面中。
實(shí)現(xiàn)的核心代碼如下:
在ActionScript 3.0中,使用 URLLoader與 URL Request加載XML格式的ASP取代了先前版本Load Vars方法,有關(guān)于網(wǎng)絡(luò)操作的內(nèi)置類全部在flash.net里。URLLoader是用于從網(wǎng)絡(luò)或者本地讀取文件;URL Request是傳遞變量到服務(wù)器以及URLLoader要加載的目標(biāo)路徑。在加載數(shù)據(jù)時(shí)用到偵聽(tīng)器,該文建議:flash player內(nèi)置類的所有事件都用相關(guān)事件類常量來(lái)表示,推薦使用他們來(lái)注冊(cè)事件偵聽(tīng)器,而所有的內(nèi)置類的事件(Event)全部在flash.events包中。如使用:
Flash獲得數(shù)據(jù)庫(kù)的數(shù)據(jù)后,根據(jù)這些數(shù)據(jù)繪制對(duì)應(yīng)的統(tǒng)計(jì)圖。Flash的交互主要以按鈕交互為主,而且可以把按鈕交互置于動(dòng)畫(huà)之中,同時(shí)也可以在按鈕上設(shè)計(jì)動(dòng)畫(huà),這樣使得其交互功能具有變化多端的特點(diǎn)[8]。在此,筆者的編寫思路是:設(shè)置兩個(gè)單選按鈕,通過(guò)觸發(fā)MouseEvent.CLICK事件,當(dāng)選擇柱狀統(tǒng)計(jì)圖,并點(diǎn)擊查詢按鈕時(shí),根據(jù)這些數(shù)據(jù)繪制柱狀統(tǒng)計(jì)圖;選擇折線統(tǒng)計(jì)圖時(shí),繪制折線統(tǒng)計(jì)圖(如圖2所示)。
圖2 折線統(tǒng)計(jì)圖
以繪制柱狀統(tǒng)計(jì)圖為例,核心代碼如下:
疾病統(tǒng)計(jì)是從數(shù)量方面研究疾病在人群中發(fā)生、發(fā)展和流行分布的特點(diǎn)與規(guī)律,為病因?qū)W研究、防治疾病和評(píng)價(jià)防治工作效果提供科學(xué)依據(jù)。利用Flash與數(shù)據(jù)庫(kù)的數(shù)據(jù)通信,可以將數(shù)據(jù)庫(kù)數(shù)據(jù)以生動(dòng)直觀的圖形、動(dòng)畫(huà)顯示出來(lái),以此應(yīng)用到醫(yī)學(xué)中的各種疾病統(tǒng)計(jì)及醫(yī)學(xué)實(shí)驗(yàn)?zāi)M中去。
圖3 重大疾病統(tǒng)計(jì)圖
該文中,將Flash與數(shù)據(jù)庫(kù)間的數(shù)據(jù)通信技術(shù)應(yīng)用到居民健康檔案管理系統(tǒng)中,界面如圖3所示(此圖中的數(shù)據(jù)僅用做測(cè)試)。該界面設(shè)置了多個(gè)下拉列表作為篩選條件,兩個(gè)單選鈕控制統(tǒng)計(jì)圖類型。通過(guò)設(shè)置統(tǒng)計(jì)條件,可以針對(duì)一定區(qū)域內(nèi),依據(jù)不同時(shí)間段、不同年齡段和性別等條件,實(shí)現(xiàn)對(duì)居民重大疾病發(fā)病數(shù)進(jìn)行直觀統(tǒng)計(jì)的功能。從統(tǒng)計(jì)圖中可以分辨出某種疾病的高發(fā)年齡段、不同性別的重大疾病發(fā)病差異,以及不同時(shí)間段內(nèi)的疾病發(fā)病情況,有利于對(duì)該區(qū)域內(nèi)的居民健康狀況做出相應(yīng)評(píng)估,并對(duì)疾病的發(fā)病原因以及發(fā)展趨勢(shì)進(jìn)行科學(xué)分析,進(jìn)而有針對(duì)性地監(jiān)測(cè)高發(fā)疾病的發(fā)病情況,做好預(yù)防和管控工作,降低疾病發(fā)病率,提高預(yù)防工作效率。
利用Flash制作動(dòng)畫(huà)或者構(gòu)建Web站點(diǎn)時(shí),數(shù)據(jù)庫(kù)的應(yīng)用是必不可少的。Flash只是用于前端顯示數(shù)據(jù)和交互,因此在Flash中使用數(shù)據(jù)庫(kù)的方法主要就是寫好Flash數(shù)據(jù)庫(kù)的讀取變量,因此需要對(duì)實(shí)現(xiàn)各種變量的方法加以研究[9]。隨著Flash技術(shù)的日益成熟和廣泛應(yīng)用,與數(shù)據(jù)庫(kù)通信技術(shù)已成為人們研究的熱點(diǎn)。通過(guò)ASP達(dá)到了Flash與Access數(shù)據(jù)庫(kù)的無(wú)縫連接,并由此可以為Flash動(dòng)態(tài)網(wǎng)頁(yè)制作、Flash遠(yuǎn)程控制等提供基本技術(shù)支持[10],從而將Flash技術(shù)應(yīng)用于更加廣闊的領(lǐng)域。
[1]謝平.基于Flash與ASP交互的研究[J].北京教育學(xué)院學(xué)報(bào):自然科學(xué)版,2008,3(6):7-13
[2]徐浙君,俞淑燕.基于ActionScript 3.0的游戲設(shè)計(jì)框架探索[J].計(jì)算機(jī)現(xiàn)代化,2010,(3):88-89
[3]年愛(ài)華.基于ASP實(shí)現(xiàn)Flash對(duì)數(shù)據(jù)庫(kù)的訪問(wèn)[J].中國(guó)西部科技,2010,9(6):26-29
[4]謝江,任宏德.用ASP實(shí)現(xiàn)Flash和數(shù)據(jù)庫(kù)聯(lián)接[J].計(jì)算機(jī)與信息技術(shù),2007,(17):83
[5]王鵬,張鴻凱,暴立宏,等.Flash和數(shù)據(jù)庫(kù)連接在網(wǎng)絡(luò)課件中的應(yīng)用[J].科技信息,2008,(13):371-372
[6]胡本峰,趙輝.ASP動(dòng)態(tài)網(wǎng)站開(kāi)發(fā)從基礎(chǔ)到實(shí)踐[M].北京:電子工業(yè)出版社,2007:174-183
[7]王田,宋文強(qiáng),肖崳.基于ASP的Flash與Access數(shù)據(jù)庫(kù)數(shù)據(jù)通訊的實(shí)現(xiàn)[J].重慶工學(xué)院學(xué)報(bào):自然科學(xué),2009,23(4):121-123
[8]冉華全,曾照芳.用Flash開(kāi)發(fā)制作醫(yī)學(xué)網(wǎng)絡(luò)課程的研究[J].西北醫(yī)學(xué)教育,2006,14(4):396-397
[9]謝富平.綜述Flash與ASP連接數(shù)據(jù)庫(kù)的應(yīng)用方法[J].電腦開(kāi)發(fā)與應(yīng)用,2011,24(10):65-66
[10]胡芳芳,陳堯妃.Flash構(gòu)建Web站點(diǎn)數(shù)據(jù)庫(kù)應(yīng)用技術(shù)研究[J].福建電腦,2008,(10):93