Flash AS3中数据发送与接收(4)
但是我们还是要看到数组操作的好处,能遍历,能循环操作。
所以,小弟认为只要您需要的数据能用一个通项(或者多个参数)来表示或者具有一定的规律,可以用数学关系描述,用数组也能为你提高工作效率。
但是我们还需要对数组进行一定的加工,才能用。
加工步骤一:
var my_arr:Array=new Array();
my_arr[0]= "变量一=123";
my_arr[1]= "变量二=456";
数组各项采用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]);
遍历所有数组项,用&符号连接各项,并添加到该数组的最后一项。
Trace得到变量一=123&变量二=456&,这样就已经得到符合要求的字符串了。
加工步骤三:
var my_urlloader:URLLoader=new URLLoader()
my_urlloader.data=my_arr[a]
trace(my_urlloader.data)
将上面数组的最后一项赋值,即变量一=123&变量二=456&,给my_urlloader.data
初看起来,确实很麻烦。
偶无聊,于是给Array类prototype了一个新方法toloadvars,把上面说到的几个步骤,进行了一定的集成,如下:
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
};
看看怎么用吧?新手又必要看,老鸟别笑我
举个例子:
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方法复制到动作面板顶部,
- 第二步:定义数组,用来组织变量,注意格式。这里就看个人发挥了。用的好,能大大提高效率。
- 第三步:定义URLRequest对象
- 第四步:调用数组的toloadvars方法,传递参数是my_url对象。
然后就开始执行自定义的toloadvars方法了,
该方法将自动将数组中定义的每一个变量,用&连接起来,然后将连接后的结果送到URLrequest.data属性里面。
最后提示:最好将URLRequest对象的url,method都定义好,然后用数组组织变量,然后用toloadvars方法。这个思路会稍微清晰点,不会混乱。