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

Peter在写这个例子的时候说“Not sure if this is helpful to anybody”,其他人不敢说,不过这个例子刚好是我所需要的�C我在做的一个解析 ActionScript文件的项目中需要用到这个功能。例子中演示了如何利用 URLLoader和 URLVariables类,从一个扩展文件中读入一定格式的内容(name/value),根据读入的内容随即显示在 DataGrid控件中。
下面是完整代码:
Download: main.mxml
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="horizontal" verticalAlign="middle" backgroundColor="white" creationComplete="init()"> 
  3.     <mx:Script>
  4.         <![CDATA[
  5.             import mx.collections.ArrayCollection;
  6.             [Bindable]
  7.             private var VARIABLES_URL:String = "params.txt";
  8.             [Bindable]
  9.             private var arrColl:ArrayCollection;
  10.             [Bindable]
  11.             private var paramColl:ArrayCollection;
  12.             private var urlReq:URLRequest;
  13.             private var urlLdr:URLLoader;
  14.             private function init():void {
  15.                 /* Initialize the two ArrayCollections objects with empty arrays. */
  16.                 arrColl = new ArrayCollection();
  17.                 paramColl = new ArrayCollection();
  18.                 /* Initialize the URLRequest object with the URL to the file of name/value pairs. */
  19.                 urlReq = new URLRequest(VARIABLES_URL);
  20.                 /* Initialize the URLLoader object, assign the various event listeners, and load the specified URLRequest object. */
  21.                 urlLdr = new URLLoader();
  22.                 urlLdr.addEventListener(Event.COMPLETE, doEvent);
  23.                 urlLdr.addEventListener(Event.OPEN, doEvent);
  24.                 urlLdr.addEventListener(HTTPStatusEvent.HTTP_STATUS, doEvent);
  25.                 urlLdr.addEventListener(IOErrorEvent.IO_ERROR, doEvent);
  26.                 urlLdr.addEventListener(ProgressEvent.PROGRESS, doEvent);
  27.                 urlLdr.addEventListener(SecurityErrorEvent.SECURITY_ERROR, doEvent);
  28.                 urlLdr.load(urlReq);
  29.             }
  30.             private function doEvent(evt:Event):void {
  31.                 arrColl.addItem({type:evt.type, idx:arrColl.length+1, eventString:evt.toString()});
  32.                 switch (evt.type) {
  33.                     case Event.COMPLETE:
  34.                         /* If the load was successful, create a URLVariables object from the URLLoader.data property and populate the paramColl ArrayCollection object. */
  35.                         var ldr:URLLoader = evt.currentTarget as URLLoader;
  36.                         var vars:URLVariables = new URLVariables(ldr.data);
  37.                         var key:String;
  38.                         for (key in vars) {
  39.                             paramColl.addItem({key:key, value:vars[key]});
  40.                         }
  41.                         params.visible = true;
  42.                         break;
  43.                 }
  44.             }
  45.         ]]>
  46.     </mx:Script> 
  47.     <mx:VBox>
  48.         <mx:Label text="Events:" />
  49.         <mx:DataGrid id="events" dataProvider="{arrColl}" rowCount="5">
  50.             <mx:columns>
  51.                 <mx:DataGridColumn dataField="idx" headerText="#" width="20" />
  52.                 <mx:DataGridColumn dataField="type" headerText="Type" showDataTips="true" dataTipField="eventString" />
  53.             </mx:columns>
  54.         </mx:DataGrid>
  55.     </mx:VBox> 
  56.     <mx:VBox>
  57.         <mx:Label text="Parameters:" />
  58.         <mx:DataGrid id="params" dataProvider="{paramColl}" rowCount="5" visible="false">
  59.             <mx:columns>
  60.                 <mx:DataGridColumn dataField="key" headerText="Key" />
  61.                 <mx:DataGridColumn dataField="value" headerText="Value" />
  62.             </mx:columns>
  63.         </mx:DataGrid>
  64.     </mx:VBox> 
  65. </mx:Application>

你可能感兴趣的:(职场,休闲)