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

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

下面是完整代码:

 

 <?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> <!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/ Minified using disk Page Caching using disk (enhanced) (request URI contains query) Database Caching using disk Object Caching 63/145 objects using disk Served from: blog.minidx.com @ 2011-03-31 03:09:10 -->

你可能感兴趣的:(datagrid,Flex,application,actionscript,caching,variables)