在Flex中要获得url传递的参数值时,分两种情况:
第一种,如果是在浏览器直接打开swf文件,如下所示:
http://www.example.com/example.swf?name=value
上面这种情况下可以直接使用this.parameters.name这种方式在flex里面取url参数。
第二种,如果是要在一个包含swf文件的html页面中获得参数值,如下所示:
这时取得url参数就相对要麻烦点,在网上找了些方法,觉得还是jexchen的方法最方便,详细请看:《Flex程序如何获取html容器传递的URL参数值》。
我把他的代码稍微改了点,可以用表格的方式直接看url参数。
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="init();" verticalAlign="middle" horizontalAlign="center">
<mx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
[Bindable]
public var dp:ArrayCollection = new ArrayCollection();
private function init():void{
var myStr:String=ExternalInterface.call("window.location.search.substring",1);
if(myStr){
var pairs:Array = myStr.split("&");
for(var i:uint=0;i< pairs.length;i++){
var pos:int = pairs[i].indexOf("=");
if(pos != -1){
var argname:String = pairs[i].substring(0, pos);
var value:String = pairs[i].substring(pos+1);
var myObj:Object=new Object();
myObj['name']=pairs[i].substring(0, pos);
myObj['value']=pairs[i].substring(pos+1);
dp.addItem(myObj);
}
}
}
}
]]>
</mx:Script>
<mx:DataGrid dataProvider="{dp}">
<mx:columns>
<mx:DataGridColumn dataField="name" headerText="Name" />
<mx:DataGridColumn dataField="value" headerText="Value" />
</mx:columns>
</mx:DataGrid>
</mx:Application>
演示:请点击这里。jexchen现在又找到一个用SWFObject的新方法来获得url参数值,可以参看《再谈:Flex程序如何获取html容器传递的URL参数值》。