Flex获取参数(一)——window.location.search.substring

第1步:在网页中设置一个链接,如 <a href="test.asp?p1=test1&p2=test2">测试链接一</a>,其中test.asp嵌入了flash

第2步:获取参数,生成flash的mxml文件源码如下:
1、获取所有参数
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
      xmlns:s="library://ns.adobe.com/flex/spark"
      xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600" creationComplete="init(event)">
 <fx:Declarations>
  <!-- 将非可视元素(例如服务、值对象)放在此处 -->
 </fx:Declarations>
 <fx:Script>  
  <![CDATA[
   //import mx.controls.Alert;
   import mx.events.FlexEvent;
   
   private var params:Object;
   
   private function init(event:FlexEvent):void {
    btnID.addEventListener(MouseEvent.CLICK, clickHandler);
   }
   
   private function clickHandler(evt:Event):void {
    var args:Object = getParams(); 
    for(var name:String in args){
     dispID.text += "name:" + name + "\n" + "address:" + args[name] + "\n";
    }

   }
   
   private function getParams():Object {
    params = {}; 
    var query:String = ExternalInterface.call("window.location.search.substring", 1);
    //Alert.show(ExternalInterface.call("window.location.href.toString",1)); 
    //Alert.show(query);
    if(query) {
     var pairs:Array = query.split("&");
     for(var i:uint=0; i < pairs.length; i++) {
      var pos:int = pairs[i].indexOf("=");
      //Alert.show(String(pos));
      if(pos != -1) {
       var argname:String = pairs[i].substring(0, pos);
       var argvalue:String = pairs[i].substring(pos+1); 
       
       params[argname] = argvalue; 
      }
     }
    }
    return params;
   }
  ]]>  
 </fx:Script>  
 <s:Button id="btnID" y="218" label="GetParams" horizontalCenter="0"/>  
 <s:TextArea id="dispID" y="47" width="200" horizontalCenter="0"/>  
</s:Application> 

2、获取指定参数
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
      xmlns:s="library://ns.adobe.com/flex/spark"
      xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600" creationComplete="init(event)">
 <fx:Declarations>
  <!-- 将非可视元素(例如服务、值对象)放在此处 -->
 </fx:Declarations>
 <fx:Script>  
  <![CDATA[
   import mx.controls.Alert;
   import mx.events.FlexEvent;
   
   private var params:Object;
   
   private function init(event:FlexEvent):void {
    btnID.addEventListener(MouseEvent.CLICK, clickHandler);
   }
   
   private function clickHandler(evt:Event):void {
    var args:Object = getParams(); 
    var param1:String=params["test1"];
    Alert.show(param1);
   }
   
   private function getParams():Object {
    params = {};
    var query:String = ExternalInterface.call("window.location.search.substring", 1);
    //Alert.show(ExternalInterface.call("window.location.href.toString",1));
    //Alert.show(query);
    if(query) {
     var pairs:Array = query.split("&");
     for(var i:uint=0; i < pairs.length; i++) {
      var pos:int = pairs[i].indexOf("=");
      //Alert.show(String(pos));
      if(pos != -1) {
       var argname:String = pairs[i].substring(0, pos);
       var argvalue:String = pairs[i].substring(pos+1);
       
       params[argname] = argvalue;
      }
     }
    }
    return params;
   }
  ]]>  
 </fx:Script>  
 <s:Button id="btnID" y="218" label="get test1" horizontalCenter="0"/>  
</s:Application> 

注:如果window.location.search.substring换成window.location.href.toString 则可获取完整的url

参考:

http://blog.csdn.net/cyyingsun/article/details/7577223

http://www.cnblogs.com/cos2004/archive/2011/03/30/19×××5.html//或者用for in来遍历