第四部分:如何組織發(fā)送的變量?
as2中的loadvars類(lèi),它是用n個(gè)屬性保存變量 as3使用URLRequest類(lèi)的data屬性保存變量. 使用一個(gè)屬性保存變量? 更絕的是,該data屬性是一個(gè)object值.靠! 理論上說(shuō),我們已經(jīng)可以把a(bǔ)s3中的任意東西傳送給外部腳本. 現(xiàn)實(shí)一點(diǎn)來(lái)說(shuō), 將data屬性定義為一個(gè)string類(lèi)型, 就已經(jīng)能實(shí)現(xiàn)我們的簡(jiǎn)單需求了 比如傳遞多個(gè)變量 URLRequest.data="變量1=1&變量2=2&變量3=3", 只要會(huì)一定的字符串操作,就能很好的組織自己想發(fā)送的數(shù)據(jù)了. 站巨人肩上,我們?cè)傧胍幌?br>如果有n個(gè)變量,(n的值可以讓人操作n個(gè)字符串的時(shí)候發(fā)狂.呵呵) 如果是loadvars類(lèi),那沒(méi)辦法,還是老老實(shí)實(shí)的一個(gè)一個(gè)寫(xiě)吧 as3中,怎么弄?怎么弄?怎么弄?怎么弄?怎么弄?怎么弄? 既然data屬性是個(gè)object值. 又需要保存很多數(shù)據(jù). 那么有個(gè)詞已經(jīng)呼之欲出了 數(shù)組! 說(shuō)到這里我就卡住了, 我再考慮,數(shù)組這部分究竟就該詳細(xì)的說(shuō)一下 ,還是略去. 考慮2分鐘.................
既然能學(xué)到今天的as3想必已經(jīng)是as2老手了,數(shù)組操作不講也罷了 如果是新手剛?cè)腴T(mén),估計(jì)您應(yīng)該先去as2版塊找找數(shù)組的資料 呵呵 小弟這里就偷偷懶 見(jiàn)諒了
最后提示一個(gè): 如果你還是喜歡as2的書(shū)寫(xiě)方式。 as3還是可以滿足你的。 參考URLVariables類(lèi)。 代碼如下:
var variables:URLVariables = new URLVariables(); variables.exampleSessionId = new Date().getTime(); variables.exampleUserLabel = "guest"; request.data = variables;
前面3句代碼似曾相識(shí)吧 完全和as2的loadvars類(lèi)一樣, 只不過(guò)最后還是需要把URLVariables對(duì)象賦值給URLRequest對(duì)象的data屬性。
URLRequest.data中大有文章,它是一個(gè)Object值。理論上來(lái)說(shuō)就可以傳遞任何東西,無(wú)論是可視對(duì)象還是不可視的其他對(duì)象(各種類(lèi)),但是對(duì)于與外部腳本通信來(lái)說(shuō),我們需要的僅僅是name=value 如此格式的字符串,然后用 &符號(hào)連接而已。 在As3中組織需要傳遞的變量,推薦的做法是用URLVariables類(lèi)。 說(shuō)白了,就是剝奪了政治權(quán)利的 LoadVars類(lèi),然后給改名成了URLVariables類(lèi)。 詳細(xì)的方法和屬性,參考一下幫助文件就行了 下面給出一個(gè)范例代碼,也是在上文中出現(xiàn)過(guò)的:
var request:URLLoader=new URLLoader var variables:URLVariables = new URLVariables(); variables.變量一 = "變量一" variables.變量一 = "變量二"; request.data = variables; trace(variables) trace(request.data)
從trace的結(jié)果應(yīng)該知道,variables已經(jīng)將自己的幾個(gè)屬性以及屬性值用&連接起來(lái)了。 當(dāng)初我還以為可以在URLRequest.data上大做文章,隨著進(jìn)一步的學(xué)習(xí)和實(shí)驗(yàn),發(fā)現(xiàn),其實(shí)用數(shù)組來(lái)組織需要傳遞的變量其實(shí)沒(méi)什么必要了,也不能直接實(shí)現(xiàn)。 為什么說(shuō)不能直接實(shí)現(xiàn)呢?看一個(gè)例子就知道了 下面我們令URLRequest.data等于一個(gè)數(shù)組,看代碼:
var my_arr:Array=new Array(); my_arr[0]= "123" my_arr[1]= "456" var request:URLLoader=new URLLoader request.data=my_arr trace(my_arr) trace(request.data) Trace結(jié)果都是 123,456
這樣的結(jié)果用于傳遞變量到外部腳本肯定是不能用的。 外部腳本能夠接受的變量形式首先要求是name=value配對(duì),然后是用&連接。 相對(duì)于能自動(dòng)組織變量的URLVariables類(lèi)來(lái)說(shuō),用數(shù)組的方法真是有點(diǎn)麻煩。
出處:藍(lán)色理想
責(zé)任編輯:tada
上一頁(yè) AS3中數(shù)據(jù)發(fā)送與接收 [2] 下一頁(yè) AS3中數(shù)據(jù)發(fā)送與接收 [4]
◎進(jìn)入論壇RIA設(shè)計(jì)與應(yīng)用版塊參加討論
|