Flex中利用URLLoader和URLVariables类导入文件的例子

Peter在写这个例子的时候说“Not sure if this is helpful to anybody”,其他人不敢说,不过这个例子刚好是我所需要的–我在做的一个解析ActionScript文件的项目中需要用到这个功能。例子中演示了如何利用URLLoader和URLVariables类,从一个扩展文件中读入一定格式的内容(name/value),根据读入的内容随即显示在DataGrid控件中。

下面是完整代码:

Download: main.mxml <? xml version="1.0" encoding="utf-8" ?>  
< mx:Application  xmlns:mx ="http://www.adobe.com/2006/mxml"  layout ="horizontal"  verticalAlign ="middle"  backgroundColor ="white"  creationComplete ="init()" >   
  
    
< mx:Script >  
        
<![CDATA[  
            import mx.collections.ArrayCollection; 
  
            [Bindable] 
            private var VARIABLES_URL:String = "params.txt"; 
  
            [Bindable] 
            private var arrColl:ArrayCollection; 
  
            [Bindable] 
            private var paramColl:ArrayCollection; 
  
            private var urlReq:URLRequest; 
            private var urlLdr:URLLoader; 
  
            private function init():void { 
                /* Initialize the two ArrayCollections objects with empty arrays. */ 
                arrColl = new ArrayCollection(); 
                paramColl = new ArrayCollection(); 
  
                /* Initialize the URLRequest object with the URL to the file of name/value pairs. */ 
                urlReq = new URLRequest(VARIABLES_URL); 
  
                /* Initialize the URLLoader object, assign the various event listeners, and load the specified URLRequest object. */ 
                urlLdr = new URLLoader(); 
                urlLdr.addEventListener(Event.COMPLETE, doEvent); 
                urlLdr.addEventListener(Event.OPEN, doEvent); 
                urlLdr.addEventListener(HTTPStatusEvent.HTTP_STATUS, doEvent); 
                urlLdr.addEventListener(IOErrorEvent.IO_ERROR, doEvent); 
                urlLdr.addEventListener(ProgressEvent.PROGRESS, doEvent); 
                urlLdr.addEventListener(SecurityErrorEvent.SECURITY_ERROR, doEvent); 
                urlLdr.load(urlReq); 
            } 
  
            private function doEvent(evt:Event):void { 
                arrColl.addItem({type:evt.type, idx:arrColl.length+1, eventString:evt.toString()}); 
  
                switch (evt.type) { 
                    case Event.COMPLETE: 
                        /* If the load was successful, create a URLVariables object from the URLLoader.data property and populate the paramColl ArrayCollection object. */ 
                        var ldr:URLLoader = evt.currentTarget as URLLoader; 
                        var vars:URLVariables = new URLVariables(ldr.data); 
                        var key:String; 
  
                        for (key in vars) { 
                            paramColl.addItem({key:key, value:vars[key]}); 
                        } 
  
                        params.visible = true; 
                        break; 
                } 
            } 
        
]]>  
    
</ mx:Script >   
  
    
< mx:VBox >  
        
< mx:Label  text ="Events:"   />  
        
< mx:DataGrid  id ="events"  dataProvider =" {arrColl} "  rowCount ="5" >  
            
< mx:columns >  
                
< mx:DataGridColumn  dataField ="idx"  headerText ="#"  width ="20"   />  
                
< mx:DataGridColumn  dataField ="type"  headerText ="Type"  showDataTips ="true"  dataTipField ="eventString"   />  
            
</ mx:columns >  
        
</ mx:DataGrid >  
    
</ mx:VBox >   
  
    
< mx:VBox >  
        
< mx:Label  text ="Parameters:"   />  
        
< mx:DataGrid  id ="params"  dataProvider =" {paramColl} "  rowCount ="5"  visible ="false" >  
            
< mx:columns >  
                
< mx:DataGridColumn  dataField ="key"  headerText ="Key"   />  
                
< mx:DataGridColumn  dataField ="value"  headerText ="Value"   />  
            
</ mx:columns >  
        
</ mx:DataGrid >  
    
</ mx:VBox >   
  
</ mx:Application >

 

 来自:http://blog.minidx.com/2008/05/14/847.html

你可能感兴趣的:(variable)