第四部分:如何组织发送的变量?
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类来说,用数组的方法真是有点麻烦。
出处:蓝色理想
责任编辑:tada
上一页 AS3中数据发送与接收 [2] 下一页 AS3中数据发送与接收 [4]
◎进入论坛RIA设计与应用版块参加讨论
|