李進(jìn)豪
(廣東省海洋工程職業(yè)技術(shù)學(xué)校,廣州 510320)
基于AS3的數(shù)據(jù)交換技術(shù)的研究與實(shí)踐
李進(jìn)豪
(廣東省海洋工程職業(yè)技術(shù)學(xué)校,廣州 510320)
AS3提供了創(chuàng)建效果豐富的Web應(yīng)用程序所需的功能和靈活,是開發(fā)Web應(yīng)用程序的常用開發(fā)語言之一。文章基于實(shí)際工作項(xiàng)目和需求,重點(diǎn)探索基于AS3的數(shù)據(jù)交換技術(shù)的常用方法與具體的可行性實(shí)施方案,并以兩個(gè)實(shí)踐案例輔以佐證。
AS3;數(shù)據(jù)交換;XML;ASP.NET;案例
AS3(ActionScript 3.0)提供了創(chuàng)建效果豐富的Web應(yīng)用程序所需的功能和靈活,更適合高度復(fù)雜的Web應(yīng)用程序和大數(shù)據(jù)集。文章主要根據(jù)筆者的實(shí)際工作項(xiàng)目和需求,重點(diǎn)探索基于AS3的數(shù)據(jù)交換技術(shù)的常用方法與具體的可行性實(shí)施方案。
1.1 益智趣味游戲中的內(nèi)部生成性數(shù)據(jù)讀寫
AS3是一種強(qiáng)大的面向?qū)ο缶幊陶Z言,這讓開發(fā)基于Internet的益智趣味小游戲變得非常簡單。但在游戲設(shè)計(jì)過程中,我們常常會有生成性的臨時(shí)數(shù)據(jù)需要保存,需要在內(nèi)部進(jìn)行讀寫。因此,如何有效地進(jìn)行數(shù)據(jù)交換,是我們必須解決的技術(shù)問題之一。
1.2 在線測試系統(tǒng)中的外部永久性數(shù)據(jù)讀寫
Flash是一個(gè)非常優(yōu)秀的矢量動畫制作軟件,它以流式控制技術(shù)和矢量技術(shù)為核心,目前已成為網(wǎng)頁動畫設(shè)計(jì)最為流行的軟件之一,常用于設(shè)計(jì)教學(xué)資源(例:多媒體課件等)。而AS3語言的簡易性和高性能的響應(yīng)代碼,這讓基于AS3開發(fā)在線測試系統(tǒng)成為一種可行的方法(作為檢測功能包含于教學(xué)資源中)。因此,如何讀寫外部數(shù)據(jù)(數(shù)據(jù)交換)也是我們必須解決的技術(shù)問題之一。
2.1 內(nèi)部數(shù)據(jù)交換(不同場景)
(1)基于Array類的內(nèi)部數(shù)據(jù)交換
基于Array類(數(shù)組)的內(nèi)部數(shù)據(jù)交換,其讀寫操作相對比較簡單。創(chuàng)建Array對象時(shí),可以使用new Array()構(gòu)造函數(shù)。
●創(chuàng)建:var myinfo:Array=new Array();
●讀?。簃yxm.text=myinfo[i][j],讀取一個(gè)二維數(shù)組第i行第j列的內(nèi)容。
●寫入:myinfo[i]=new Array(),myinfo[i][j]=myxm. text,把動態(tài)文本myxm的內(nèi)容寫入數(shù)組中。
(2)基于XML類的內(nèi)部數(shù)據(jù)交換
基于XML類的內(nèi)部數(shù)據(jù)交換,主要利用XML類創(chuàng)建一個(gè)新的XML對象,用于存儲內(nèi)部數(shù)據(jù),然后利用child()和appendChild()進(jìn)行讀寫。XML類的主要方法有:
●XML(value:Object),創(chuàng)建一個(gè)新的XML對象。例:myXML=new XML();
●讀?。篶hild(propertyName:Object):XMLList,列出XML對象的子項(xiàng)。例:myXML.child(2).child(0),讀取第三條記錄第一個(gè)字段的內(nèi)容。
●寫入:appendChild(child:Object):XML,將給定子項(xiàng)追加到XML對象的末尾。例:myXML.appendChild(newItem)。
2.2 外部數(shù)據(jù)交換(不同應(yīng)用程序)
(1)基于Socket類的外部數(shù)據(jù)交換
Socket類使ActionScript代碼可以建立套接字連接并讀取和寫入原始二進(jìn)制數(shù)據(jù)。它與XMLSocket類似,但沒有指定接收或傳輸?shù)臄?shù)據(jù)格式。Socket類的主要方法有:
●Socket(host:String=null,port:int=0),創(chuàng)建一個(gè)Socket對象。例:CustomSocket=new Socket()。
●close():void,關(guān)閉套接字。例:CustomSocket.close()。
●connect(host:String,port:int):void,將套接字連接到指定的主機(jī)和端口。例:CustomSocket.connect("localhost",80)。
●flush():void,對套接字輸出緩沖區(qū)中積累的所有數(shù)據(jù)進(jìn)行刷新。例:CustomSocket.flush()。
●readUTFBytes(length:uint):String,從套接字讀取length參數(shù)所指定的UTF-8數(shù)據(jù)的字節(jié)數(shù),并返回一個(gè)字符串。例:str=readUTFBytes(bytesAvailable)。注:Socket類還有很多讀取的方法,readUTFBytes只是其讀操作中的一種。
●writeUTFBytes(value:String):void,將一個(gè)UTF-8字符串寫入套接字。例:writeUTFBytes(str)。注:Socket類還有很多寫入的方法,writeUTFBytes只是其寫操作中的一種。
(2)基于XMLSocket類的外部數(shù)據(jù)交換
XMLSocket類實(shí)現(xiàn)了客戶端套接字,這使得運(yùn)行Flash Player的計(jì)算機(jī)可以與由IP地址或域名標(biāo)識的服務(wù)器計(jì)算機(jī)進(jìn)行通信。XMLSocket類的主要方法有:
●XMLSocket(host:String=null,port:int=0),創(chuàng)建一個(gè)新的XMLSocket對象。例:Xsocket=new XMLSocket()。
●close():void,關(guān)閉由XMLSocket對象指定的連接。例:Xsocket.close()。
●connect(host:String,port:int):void,使用指定的TCP端口建立到指定Internet主機(jī)的連接。例:Xsocket. connect(hostName,port)。
●send(object:*):void,將object參數(shù)中指定的XML對象或數(shù)據(jù)轉(zhuǎn)換成字符串,并將其傳輸?shù)椒?wù)器。例:Xsocket.send(data)。
(3)基于XML+ASP.NET的外部數(shù)據(jù)交換
基于安全性考慮,AS3可以從外部數(shù)據(jù)源讀取數(shù)據(jù),也可以與Internet上的服務(wù)器進(jìn)行通信,但不支持直接寫入操作。因此,基于XML+ASP.NET的外部數(shù)據(jù)交換,讀取服務(wù)器上的XML文件的數(shù)據(jù)可以采用直接讀取方法,但把數(shù)據(jù)寫入服務(wù)器上的XML文件,則需要借助外部程序(例:ASP.NET)。主要原理:
●數(shù)據(jù)存儲:XML。這是一種可擴(kuò)展標(biāo)記語言,標(biāo)準(zhǔn)通用標(biāo)記語言的子集,是一種用于標(biāo)記電子文件使其具有結(jié)構(gòu)性的標(biāo)記語言,也常用于保存數(shù)據(jù)。
●讀取:利用AS3中的URLRequest類和URLLoader類讀取服務(wù)器上的XML文件。
●寫入:利用URLRequest類調(diào)用一個(gè)帶參數(shù)的網(wǎng)頁,最后依靠ASP.NET程序把數(shù)據(jù)寫入到服務(wù)器上的XML文件。
●圖形文件的存儲:采用外置模式,即XML文件中只保存圖形文件的路徑,圖形文件以外置的模式存放,其讀取方式與讀取XML文件相類似,寫入操作也是通過參數(shù)在外部程序中實(shí)現(xiàn)(例:ASP.NET)。
●存儲模式比較:利用ASP.NET寫入數(shù)據(jù),可選擇的數(shù)據(jù)存儲方式是有多種的(例:SQL SERVER數(shù)據(jù)庫等),但從簡易性角度考慮,選擇XML文件存儲是最有效的方法之一。
2.3 混合模式的數(shù)據(jù)交換
由于XML文件易于在任何應(yīng)用程序中被讀寫,具有跨平臺的特性,因此XML特別適用于基于Internet的數(shù)據(jù)交換。在課題研究與實(shí)際項(xiàng)目開發(fā)中,筆者也發(fā)現(xiàn)不管是內(nèi)部數(shù)據(jù)交換還是外部數(shù)據(jù)交換,選擇XML文件(對象)存儲數(shù)據(jù)是最簡單、最方便的,可以與其他應(yīng)用程序(或不同場景)進(jìn)行數(shù)據(jù)共享。因此,混合模式的數(shù)據(jù)交換,筆者建議基于XML進(jìn)行數(shù)據(jù)交換,其基本原理是:
圖1
3.1 需求
項(xiàng)目來源:廣東省中等職業(yè)學(xué)校“百千萬人才培養(yǎng)工程”專業(yè)名師培養(yǎng)對象專項(xiàng)資金教科研項(xiàng)目(課堂教學(xué)有效性的研究與實(shí)踐,第六屆全國農(nóng)業(yè)職業(yè)教育教學(xué)成果二等獎)。
需求:利用AS3設(shè)計(jì)益智趣味游戲時(shí),需要臨時(shí)保存游戲中的生成性數(shù)據(jù),以實(shí)現(xiàn)游戲的設(shè)計(jì)目標(biāo)和趣味性等。
3.2 基于XML類的內(nèi)部數(shù)據(jù)交換
圖2
3.3 實(shí)現(xiàn)
(1)創(chuàng)建XML對象(存儲數(shù)據(jù))
(2)讀取XML的數(shù)據(jù)
●讀取XML對象中的第一條記錄的第一個(gè)字段和第二個(gè)字段數(shù)據(jù)的代碼
●讀取XML對象中的第x條記錄的第y個(gè)字段數(shù)據(jù)的代碼
(3)把數(shù)據(jù)寫入XML
●靜態(tài)數(shù)據(jù)寫入
4.1 需求
項(xiàng)目來源:全國農(nóng)業(yè)職教育“十三五”科研課題《基于AES的高水平教學(xué)團(tuán)隊(duì)構(gòu)建的研究與實(shí)踐》,課題編號:2016-135-Y-227。
需求:利用AS3設(shè)計(jì)在線測試系統(tǒng)時(shí),需要從外部讀取測試所需的題目,完成測試后需要將測試結(jié)果寫入到相應(yīng)的外部文件中,以便分析測試結(jié)果。
4.2 基于XML+ASP.NET的外部數(shù)據(jù)交換
圖3
4.3 實(shí)現(xiàn)
(1)外部XML文件(mydata.xml)
注:上述XML文件只是示例文件,為了簡化代碼,XML文件只保留了兩個(gè)字段。
(2)讀取外部XML文件中的數(shù)據(jù)
(3)把數(shù)據(jù)寫入外部XML文件
●AS3中的代碼
注:如果需要執(zhí)行刪除操作,其原理與增加操作相類似,修改操作也是同理。
(4)訪問XML對象時(shí)的常用技巧●統(tǒng)計(jì)記錄數(shù)
●讀取下一個(gè)記錄
●讀取上一個(gè)記錄
●讀取第一條記錄
●讀取最后一條記錄
●跳轉(zhuǎn)到某一條記錄
(5)常用的AS3事件偵聽器
●按鈕偵聽器
b1.addEventListener(MouseEvent.MOUSE_DOWN,myb1);
●鍵盤偵聽器
數(shù)據(jù)交換技術(shù)是基于AS3的Web應(yīng)用程序的核心技術(shù)之一,筆者常用于開發(fā)基于Internet的課件型教學(xué)資源系統(tǒng),常用于開發(fā)益智小游戲??紤]到推廣應(yīng)用時(shí)的兼容性,文中提及的代碼全部在Flash CS3+VS 2008環(huán)境下(AS3,C#)測試通過,并應(yīng)用于實(shí)際工作中。
[1]肖剛.Flash游戲編程教程[M].清華大學(xué)出版社,2012.
[2]李進(jìn)豪等.課堂教學(xué)有效性的研究與實(shí)踐[J].第六屆全國農(nóng)業(yè)職業(yè)教育教學(xué)成果二等獎,2015.
A Research and Practice of Data Exchange Technology Based on AS3
LI Jin-hao
(Guangdong Province Vocational School of Oceanographic Engineering,Guangzhou 510320)
AS3 which provides functions and flexibility needed for the building up the rich effect Web application program is one of common development languages for developing web application programs.Basing on the practical work project and requirements,this paper mainly explored the common methods and implementable program plans of data exchange technology based on the AS3,and used two practical cases as supporting evidence.
AS3;Data Exchange;XML;ASP.NET;Case
廣東省中等職業(yè)學(xué)校“百千萬人才培養(yǎng)工程”專業(yè)名師培養(yǎng)對象專項(xiàng)資金、全國農(nóng)業(yè)職教育“十三五”科研課題(No. 2016-135-Y-227)
1007-1423(2017)01-0056-05
10.3969/j.issn.1007-1423.2016.01.014
李進(jìn)豪(1969-),男,廣東汕頭人,碩士,高級講師,高級技師,研究方向?yàn)檐浖こ?、網(wǎng)絡(luò)游戲開發(fā)
2016-11-03
2016-12-28