Flash AS3中数据发送与接收(3)
第四部分:如何组织发送的变量?
as2中的loadvars类,它是用n个属性保存变量
as3使用URLRequest类的data属性保存变量.
使用一个属性保存变量?
更绝的是,该data属性是一个object值.靠!
理论上说,我们已经可以把as3中的任意东西传送给外部脚本.
现实一点来说,
将data属性定义为一个string类型,
就已经能实现我们的简单需求了
比如传递多个变量
URLRequest.data="变量1=1&变量2=2&变量3=3",
只要会一定的字符串操作,就能很好的组织自己想发送的数据了.
站巨人肩上,我们再想一下
如果有n个变量,(n的值可以让人操作n个字符串的时候发狂.呵呵)
如果是loadvars类,那没办法,还是老老实实的一个一个写吧
as3中,怎么弄?怎么弄?怎么弄?怎么弄?怎么弄?怎么弄?
既然data属性是个object值.
又需要保存很多数据.
那么有个词已经呼之欲出了
数组!
说到这里我就卡住了,
我再考虑,数组这部分究竟就该详细的说一下 ,还是略去.
考虑2分钟.................
既然能学到今天的as3想必已经是as2老手了,数组操作不讲也罢了
如果是新手刚入门,估计您应该先去as2版块找找数组的资料
呵呵 小弟这里就偷偷懒 见谅了
最后提示一个:
如果你还是喜欢as2的书写方式。
as3还是可以满足你的。
参考URLVariables类。
代码如下:
var variables:URLVariables = new URLVariables();
variables.exampleSessionId = new Date().getTime();
variables.exampleUserLabel = "guest";
request.data = variables;
前面3句代码似曾相识吧
完全和as2的loadvars类一样,
只不过最后还是需要把URLVariables对象赋值给URLRequest对象的data属性。
URLRequest.data中大有文章,它是一个Object值。理论上来说就可以传递任何东西,无论是可视对象还是不可视的其他对象(各种类),但是对于与外部脚本通信来说,我们需要的仅仅是name=value 如此格式的字符串,然后用 &符号连接而已。
在As3中组织需要传递的变量,推荐的做法是用URLVariables类。
说白了,就是剥夺了政治权利的 LoadVars类,然后给改名成了URLVariables类。
详细的方法和属性,参考一下帮助文件就行了
下面给出一个范例代码,也是在上文中出现过的:
var request:URLLoader=new URLLoader
var variables:URLVariables = new URLVariables();
variables.变量一 = "变量一"
variables.变量一 = "变量二";
request.data = variables;
trace(variables)
trace(request.data)
从trace的结果应该知道,variables已经将自己的几个属性以及属性值用&连接起来了。
当初我还以为可以在URLRequest.data上大做文章,随着进一步的学习和实验,发现,其实用数组来组织需要传递的变量其实没什么必要了,也不能直接实现。
为什么说不能直接实现呢?看一个例子就知道了
下面我们令URLRequest.data等于一个数组,看代码:
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结果都是 123,456
这样的结果用于传递变量到外部脚本肯定是不能用的。
外部脚本能够接受的变量形式首先要求是name=value配对,然后是用&连接。
相对于能自动组织变量的URLVariables类来说,用数组的方法真是有点麻烦。