可以使用URLVariables处理多个变量。URLVariables类是一个辅助类,定义了处理URL字符串的常见方法。URL字符串是一种特殊的字符串,它由变量名称和变量值组成,并使用“&”连接不同的名称和值。例如,下面的URL字串定义了五个变量的取值:
va1=Twar&va2=andy_with_his_mon&va3="Kench"&va4=Leothe/nLion&va5='Uncle in WW2.'
实际上,字符串并不是严格的URL格式,因为在文本中保存这些字符串时,可以使用回车换行。字符串利用“&”符号进行分割,应注意“&”符号左右不能出现回车和空白字符。
将上面的字符串稍作修改,存储在文本文件url.txt中,并利用代码读取:
//url.txt
va1=Twar&va2=andy_with_his_mon&va3="Kench"&va4=Leothe/n
Lion&va5='Uncle in WW2.'
在存储为txt文本时,为字符串增加了换行。下面是FLV中的读取代码:
var myld:URLLoader=new URLLoader();
myld.load(new URLRequest("url.txt"));
//侦听加载完成
myld.addEventListener(Event.COMPLETE,loadcomplete);
//加载完成侦听器函数
function loadcomplete(ea:Event):void {
trace(myld.dataFormat);
trace(String(myld.data));
//分解加载数据
var uv:URLVariables=new URLVariables(String(myld.data));
//输出加载数据
trace("uv.va1: "+uv.va1);
trace("uv.va2: "+uv.va2);
trace("uv.va3: "+uv.va3);
trace("uv.va4: "+uv.va4);
trace("uv.va5: "+uv.va5);
trace("uv.whatever: "+uv.whatever);
}
这段程序中,使用URLLoader对象加载外部的url.txt,并在加载完毕后,创建URLVariables对象。URLVariables类的构造函数接受一个字符串,并会自动调用URLVariables.decode()方法分析该字符串。字符串的分析结果可以按照枚举的方式访问。这段代码的输出非常值得分析:
//文本数据的类型
text
//加载的文本数据,注意保留了回车换行
va1=Twar&va2=andy_with_his_mon&va3="Kench"&va4=Leothe/n
Lion&va5='Uncle in WW2.'
//URLVariables的分析输出
uv.va1: Twar
uv.va2: andy_with_his_mon
uv.va3: "Kench"
uv.va4: Leothe/n
Lion
uv.va5: 'Uncle in WW2.'
uv.whatever: undefined
可以注意到,URLVariables对象可以使用“.”运算符连接任何名称。实际上,这是URLVariables的最独特之处。在编译阶段,并不知道文本中究竟包含什么内容,但是为了令URLVariables能够访问这些变量,编译器会忽视URLVariables对象后的成员属性,而是在运行时处理。如果URLVariables后的成员确实是存在的,则输出该成员对应的字符串。如果URLVariables后面是一个无意义的成员,则FlashPlayer并不会提示错误,而是按照未定义处理。