欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Flash AS3中數(shù)據(jù)發(fā)送與接收

互聯(lián)網(wǎng)   發(fā)布時(shí)間:2008-10-06 01:24:53   作者:佚名   我要評論
先回顧一下as2中相關(guān)的解決辦法 相信大部分人用的都是LoadVars類吧 1 var xianshi_lv = new LoadVars(); 2 xianshi_lv.bianliang1 = "變量一"; 3 xianshi_lv.bianliang2 = "變量二"; 4 xianshi_lv.bianliang3 = "變量三"; 5 xianshi_lv.
先回顧一下as2中相關(guān)的解決辦法
相信大部分人用的都是LoadVars類吧
1 var xianshi_lv = new LoadVars();
2 xianshi_lv.bianliang1 = "變量一";
3 xianshi_lv.bianliang2 = "變量二";
4 xianshi_lv.bianliang3 = "變量三";
5 xianshi_lv.sendAndLoad("http://10.7.87.222/show.asp? bianliang=" random(9999), xianshi_lv, "post");
6 xianshi_lv.onLoad = function(chenggong:Boolean) {
7 if (chenggong) {
8trace(xianshi_lv)
9 };
}
第1行:定義LoadVars對象,這家伙在as2時(shí)代幾乎把所有連接外部數(shù)據(jù)的事情都做完了。無敵! 第2 3 4 行:在LoadVars對象中存儲(chǔ)變量,直接發(fā)送到外部腳本中。 第5行:執(zhí)行sendAndLoad方法,意思是send后,load回調(diào)的數(shù)據(jù)。 第6行:onLoad事件,判斷l(xiāng)oad回調(diào)數(shù)據(jù), 第7行:判斷l(xiāng)oad回調(diào)是否成功。 在as2時(shí)代,LoadVars類把存儲(chǔ)變量,連接外部數(shù)據(jù),接受回調(diào)數(shù)據(jù)這些事情都做完了。筆者也弄很久的as2,覺得這方法不錯(cuò),學(xué)習(xí)起來也很簡單。
但是as3不同,為了分工清晰,把上面的存儲(chǔ)變量,連接外部數(shù)據(jù),接受回調(diào)數(shù)據(jù)這幾個(gè)事情都分散開了。一定程度上,本人覺得有點(diǎn)麻煩。不知道adobe是怎么想的。也許是本人還沒發(fā)現(xiàn)adobe的真正意圖·
既然as3來了,還是按他的規(guī)矩辦吧
他是什么規(guī)矩呢?
第一部分:準(zhǔn)備發(fā)送數(shù)據(jù)
1:考慮連接的外部url地址了。
as2中把url地址,變量,通通寫到LoadVars類里面。變量少?zèng)]什么,要是變量多起來,那就有點(diǎn)麻煩,遇上要?jiǎng)討B(tài)修改變量那更加麻煩了。as3索性把把這一部分又分為兩塊,統(tǒng)一到URLRequest對象里面。單純的url地址用URLRequest.url表示,變量用URLRequest.data表示。修改起來方便許多。
注意url地址也可以在使用URLRequest構(gòu)造函數(shù)的時(shí)候?qū)戇M(jìn)去。
2:數(shù)據(jù)傳送方法,post還是get。
as3狠了心了,要把它分的徹徹底底。把傳送方法也弄到URLRequest對象里面去。用URLRequest對象的method屬性表示。
同時(shí)也有兩種定義改屬性的方法:
request.method = URLRequestMethod.POST;//幫助文件中多用這種定義方式
request.method = "post";
以上兩句是等效的。你可以試試trace(URLRequestMethod.POST)。輸入是 post。
由于as3的默認(rèn)method是get,建議都顯示定義為post。

第二部分:發(fā)送數(shù)據(jù)
1:整合send和load,就用一個(gè)load()。
as2中,有單獨(dú)的load()和send(),還有sendAnaLoad()。個(gè)人覺得前兩個(gè)函數(shù)沒用,既然是和外部數(shù)據(jù)通訊,每一個(gè)與外部的連接中,都需要檢查flash的狀態(tài)和外部數(shù)據(jù)的狀態(tài),才能保證雙方的通信正常。那么load()和send()就丟掉,用一個(gè)就行了。ADOBE把剩下的sendAndLoad()統(tǒng)一改成load(),不僅邏輯結(jié)構(gòu)上更加合理,就連書寫都簡單了一半。
相關(guān)語法:
URLLoader () 構(gòu)造函數(shù)
public 函數(shù) URLLoader(request:URLRequest = null)
注意括號(hào)中是個(gè)URLRequest對象。已經(jīng)把url地址,變量,方法都包括進(jìn)去了。URLLoader對象現(xiàn)在執(zhí)行的就是連接數(shù)據(jù),接受數(shù)據(jù)兩個(gè)事情,其他的都交給URLRequest對象管理。因?yàn)閁RLLoader對象還有很多事情要做,比如偵聽連接數(shù)據(jù)和接受數(shù)據(jù)的情況,是否已經(jīng)完成操作,或者已經(jīng)完成到什么程度。在這里就大有文章了,各種各樣的loading都需要URLLoader對象的bytesLoaded屬性和bytesTotal 屬性實(shí)現(xiàn)。所以說,as3的分工還是很有道理的。

下面給出準(zhǔn)備數(shù)據(jù),連接外部數(shù)據(jù)的典型代碼.接受數(shù)據(jù)處理數(shù)據(jù)將在下一步討論
var request:URLRequest = new URLRequest("http://10.7.87.222/test.asp");
//request.contentType = "text/xml";//這句代碼可以自己單獨(dú)嘗試一下。筆者初學(xué),也沒詳細(xì)去研究這個(gè)。只知道傳遞接收xml數(shù)據(jù)的時(shí)候有用。呵呵
request.data = "bianliang=100";
request.method = "POST";
var loader:URLLoader = new URLLoader();
loader.load(request);
附asp代碼,需要在iis5以上服務(wù)器上測試.保存文件為 UTF-8編碼,文件名為test.asp.位于站點(diǎn)根目錄下.
<%@LANGUAGE="JAVASCRIPT" CODEPAGE="936"%>
<%
var bianliang=Request("bianliang")
Response.Write("&biangliang=" bianliang)
Response.Write("&chenggong=chenggong")
%>
第三部分:接受數(shù)據(jù)
我想提示的有兩點(diǎn)是:
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í)到數(shù)據(jù)的加載情況必須用事件偵聽就行了.
其實(shí)as3中的交互事件,都已經(jīng)采用上面代碼所有的事件偵聽模式.
2 需要區(qū)分 URLRequest類的data屬性與URLLoader類的data屬性
前者是表示傳遞變量的一個(gè)集合,后者是接受到的數(shù)據(jù)的一個(gè)集合.
別搞混就行了.
如果這一部分要深入下去,涉及的東西就比較多了.
包括xml的處理,和字符串的處理.
各位可以先把上面說的東西先弄熟悉了.
然后再學(xué)習(xí)怎么處理數(shù)據(jù),以便flash使用.
再此就不再過多敘述了,因?yàn)橐呀?jīng)跑題了.
差不多講完了?
NO ,我想還有個(gè)東西需要單獨(dú)提出來說說

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

但是我們還是要看到數(shù)組操作的好處,能遍歷,能循環(huán)操作。
所以,小弟認(rèn)為只要您需要的數(shù)據(jù)能用一個(gè)通項(xiàng)(或者多個(gè)參數(shù))來表示或者具有一定的規(guī)律,可以用數(shù)學(xué)關(guān)系描述,用數(shù)組也能為你提高工作效率。
但是我們還需要對數(shù)組進(jìn)行一定的加工,才能用。
加工步驟一:
var my_arr:Array=new Array();
my_arr[0]= "變量一=123";
my_arr[1]= "變量二=456";
數(shù)組各項(xiàng)采用name=value形式,
加工步驟二:
var a:Number=my_arr.length;
var i:Number
my_arr[a]="";
for (i=0; i<a; i ) {
my_arr[a]= my_arr[a] my_arr[i] "&";
}
trace(my_arr[a]);
遍歷所有數(shù)組項(xiàng),用&符號(hào)連接各項(xiàng),并添加到該數(shù)組的最后一項(xiàng)。
Trace得到變量一=123&變量二=456&,這樣就已經(jīng)得到符合要求的字符串了。
加工步驟三:
var my_urlloader:URLLoader=new URLLoader()
my_urlloader.data=my_arr[a]
trace(my_urlloader.data)
將上面數(shù)組的最后一項(xiàng)賦值,即變量一=123&變量二=456&,給my_urlloader.data
初看起來,確實(shí)很麻煩。
偶無聊,于是給Array類prototype了一個(gè)新方法toloadvars,把上面說到的幾個(gè)步驟,進(jìn)行了一定的集成,如下:
Array.prototype.toloadvars=function(URLrequest:URLRequest){
var i:Number
var a:Number=this.length
this[a]=""
for(i=0;i<a;i ){
this[a]=this[a] this[i] "&"
}
URLrequest.data=this[a]
return URLrequest.data
};
看看怎么用吧?新手又必要看,老鳥別笑我
舉個(gè)例子:
Array.prototype.toloadvars=function(URLrequest:URLRequest){
var i:Number
var a:Number=this.length
this[a]=""
for(i=0;i<a;i ){
this[a]=this[a] this[i] "&"
}
URLrequest.data=this[a]
return URLrequest.data
};
var arr:Array=new Array();
arr[0]="a=123"
arr[1]="b=456"
arr[2]="c=789"
arr[3]="d=abc"
var my_url:URLRequest=new URLRequest()
arr.toloadvars(my_url);
trace(my_url.data)
第一步:把新定義的toloadvars方法復(fù)制到動(dòng)作面板頂部, 第二步:定義數(shù)組,用來組織變量,注意格式。這里就看個(gè)人發(fā)揮了。用的好,能大大提高效率。 第三步:定義URLRequest對象 第四步:調(diào)用數(shù)組的toloadvars方法,傳遞參數(shù)是my_url對象。 然后就開始執(zhí)行自定義的toloadvars方法了,
該方法將自動(dòng)將數(shù)組中定義的每一個(gè)變量,用&連接起來,然后將連接后的結(jié)果送到URLrequest.data屬性里面。
最后提示:最好將URLRequest對象的url,method都定義好,然后用數(shù)組組織變量,然后用toloadvars方法。這個(gè)思路會(huì)稍微清晰點(diǎn),不會(huì)混亂。

相關(guān)文章

  • flash cs6鼠標(biāo)跟隨效果實(shí)現(xiàn)代碼分享

    flash cs6想要實(shí)現(xiàn)鼠標(biāo)跟隨效果?該怎么制作呢?今天我們就來看看使用as2.0實(shí)現(xiàn)鼠標(biāo)跟隨效果的教程,需要的朋友可以參考下
    2019-05-19
  • Flash cs6怎么使用代碼輸入中英文文本?

    Flash cs6怎么使用代碼輸入中英文文本?Flash cs6中可以使用文字工具直接輸入文本,也可以使用代碼來輸入文本,該怎么使用代碼輸入文本呢?請看下文詳細(xì)的教程,需要的朋友
    2018-03-11
  • flash as3.0怎么定義抽象類和抽象?

    flash as3.0抽象類怎么定義? as3.0中有很多抽象類,該怎么定義抽象類和抽象方法呢?下面我們就來看看簡單的例子,需要的朋友可以參考下http://www.dbjr.com.cn/softs/408402.
    2018-02-28
  • flash cs6中怎么使用ActionScript3.0?

    flash cs6中怎么使用ActionScript3.0?flash cs6中想要使用ActionScript3.0功能,該怎么使用呢?下面我們就來看看詳細(xì)的教程,需要的朋友可以參考下
    2018-01-25
  • Flash中怎么實(shí)現(xiàn)鼠標(biāo)點(diǎn)擊決定圖像位置?

    本教程給大家分享一個(gè)Flash小教程,教大家在Flash CS6中怎么實(shí)現(xiàn)鼠標(biāo)點(diǎn)擊決定圖像位置?方法很簡單,感興趣的朋友歡迎前來一起分享學(xué)習(xí)
    2018-01-12
  • Flash中如何用代碼將圖片放在自己想要的舞臺(tái)位置?

    本教程教腳本之家的ActionScript教程學(xué)習(xí)者在Flash中如何用代碼將圖片放在自己想要的舞臺(tái)位置,教程講解的詳細(xì),感興趣的朋友歡迎前來分享學(xué)習(xí)
    2017-11-20
  • 在Flash CS6中使用with函數(shù)繪制背景圖教程

    本教程教腳本之家的ActionScript教程學(xué)習(xí)者如何在Flash CS6中使用with函數(shù)繪制背景圖?教程一步步講解的挺詳細(xì),方法也不難,非常適合Flash新手入門學(xué)習(xí)
    2017-11-18
  • Flash怎么設(shè)置元件坐標(biāo)?flash使用代碼設(shè)置元件的坐標(biāo)的教程

    Flash怎么設(shè)置元件坐標(biāo)?flash中導(dǎo)如的元件需要添加坐標(biāo),該怎么定位元件坐標(biāo)呢?下面我們就來看看flash使用代碼設(shè)置元件的坐標(biāo)的教程,需要的朋友可以參考下
    2017-10-11
  • Flash怎么制作來回?fù)u擺的花朵的動(dòng)畫?

    Flash怎么制作來回?fù)u擺的花朵的動(dòng)畫?Flash中想要給花朵制作一段搖擺的動(dòng)畫效果,該怎么制作呢?下面我們就來看看詳細(xì)的教程,很簡單,需要的朋友可以參考下
    2017-05-23
  • Flash怎么制作流動(dòng)七彩色的文字?

    Flash怎么制作流動(dòng)七彩色的文字?想要讓文字動(dòng)起來,該怎么使用flash給文字制作一個(gè)流動(dòng)七彩色的動(dòng)畫呢?下面我們就來看看詳細(xì)的教程,需要的朋友可以參考下
    2017-04-23

最新評論