第二部分:發(fā)送數(shù)據(jù)
1:整合send和load,就用一個load()。
as2中,有單獨的load()和send(),還有sendAnaLoad()。個人覺得前兩個函數(shù)沒用,既然是和外部數(shù)據(jù)通訊,每一個與外部的連接中,都需要檢查flash的狀態(tài)和外部數(shù)據(jù)的狀態(tài),才能保證雙方的通信正常。那么load()和send()就丟掉,用一個就行了。ADOBE把剩下的sendAndLoad()統(tǒng)一改成load(),不僅邏輯結(jié)構(gòu)上更加合理,就連書寫都簡單了一半。
相關(guān)語法:
URLLoader () 構(gòu)造函數(shù) public 函數(shù) URLLoader(request:URLRequest = null)
注意括號中是個URLRequest對象。已經(jīng)把url地址,變量,方法都包括進(jìn)去了。URLLoader對象現(xiàn)在執(zhí)行的就是連接數(shù)據(jù),接受數(shù)據(jù)兩個事情,其他的都交給URLRequest對象管理。因為URLLoader對象還有很多事情要做,比如偵聽連接數(shù)據(jù)和接受數(shù)據(jù)的情況,是否已經(jīng)完成操作,或者已經(jīng)完成到什么程度。在這里就大有文章了,各種各樣的loading都需要URLLoader對象的bytesLoaded屬性和bytesTotal 屬性實現(xiàn)。所以說,as3的分工還是很有道理的。
下面給出準(zhǔn)備數(shù)據(jù),連接外部數(shù)據(jù)的典型代碼.接受數(shù)據(jù)處理數(shù)據(jù)將在下一步討論
var request:URLRequest = new URLRequest("//request.contentType = "text/xml";//這句代碼可以自己單獨嘗試一下。筆者初學(xué),也沒詳細(xì)去研究這個。只知道傳遞接收xml數(shù)據(jù)的時候有用。呵呵 request.data = "bianliang=100"; request.method = "POST"; var loader:URLLoader = new URLLoader(); loader.load(request);
附asp代碼,需要在iis5以上服務(wù)器上測試.保存文件為 UTF-8編碼,文件名為test.asp.位于站點根目錄下.
<%@LANGUAGE="JAVASCRIPT" CODEPAGE="936"%> <% var bianliang=Request("bianliang") Response.Write("&biangliang="+bianliang) Response.Write("&chenggong=chenggong") %>
第三部分:接受數(shù)據(jù)
我想提示的有兩點是:
1 數(shù)據(jù)需要加載完成以后,才能被flash使用. 所以一定要判斷是否加載完成 但是所用的語句與as2已經(jīng)完全不同了. as2使用onLoad事件 as3代碼如下
loader.addEventListener(Event.COMPLETE,completeHandler); function completeHandler(event:Event):void { trace(loader.data); }
目前大家只要認(rèn)識到數(shù)據(jù)的加載情況必須用事件偵聽就行了.
其實as3中的交互事件,都已經(jīng)采用上面代碼所有的事件偵聽模式.
2 需要區(qū)分 URLRequest類的data屬性與URLLoader類的data屬性 前者是表示傳遞變量的一個集合,后者是接受到的數(shù)據(jù)的一個集合. 別搞混就行了.
如果這一部分要深入下去,涉及的東西就比較多了. 包括xml的處理,和字符串的處理. 各位可以先把上面說的東西先弄熟悉了. 然后再學(xué)習(xí)怎么處理數(shù)據(jù),以便flash使用. 再此就不再過多敘述了,因為已經(jīng)跑題了.
差不多講完了? NO ,我想還有個東西需要單獨提出來說說
出處:藍(lán)色理想
責(zé)任編輯:tada
上一頁 AS3中數(shù)據(jù)發(fā)送與接收 [1] 下一頁 AS3中數(shù)據(jù)發(fā)送與接收 [3]
◎進(jìn)入論壇RIA設(shè)計與應(yīng)用版塊參加討論
|