Flex3加载外部数据1

发布时间:2019-09-05 07:06:10编辑:auto阅读(1457)

    1.加载文本文件中的纯文本:
    LoadData1.mxml
    <?xml version="1.0" encoding="utf-8"?>
    <!--通过Bind绑定,使用了MXML的HTTPService标签,结果格式为text文本格式-->
    <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" creationComplete="txtLoader.send();">
      <mx:Style>
        Application{font-size:12px;}
      </mx:Style>
      <mx:HTTPService id="txtLoader" url="test1.txt" resultFormat="text"/>
      <mx:VBox>
        <mx:Text text="{txtLoader.lastResult}" />
      </mx:VBox>
    </mx:Application>
     
    文本文件test1.txt:
    这是用于Flex的一段测试文本
     
     
    运行结果:
     
     
    2.这里不是用MXML标签,而采用类
    <?xml version="1.0" encoding="utf-8"?>
    <!--使用HTTPService类得到同样的结果-->
    <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" creationComplete="loadTxt(event);">
      <mx:Style>
        Application{fontSize:14px;}
      </mx:Style>
      <mx:Script>
        <![CDATA[
          import mx.rpc.events.ResultEvent;
          import mx.events.FlexEvent;
          import mx.rpc.http.HTTPService;
          private var txtLoader:HTTPService=new HTTPService();
            
          //加载文本代码如下
          private function loadTxt(evt:FlexEvent):void
          {
            txtLoader.url="test1.txt";//文件路径
            txtLoader.resultFormat="text";//结果的格式是纯文本
            txtLoader.addEventListener(ResultEvent.RESULT,resultHandler);
            
            txtLoader.send();
          }
          private function resultHandler(evt:ResultEvent):void
          {
            myTxt.text=evt.target.lastResult;//这里为文本控件赋值
          }
        ]]>
      </mx:Script>
      <mx:VBox>
        <mx:Text id="myTxt"/>
      </mx:VBox>
    </mx:Application>
     
    结果同上。
     
    3.使用URLLoader类加载数据
     
    <?xml version="1.0" encoding="utf-8"?>
    <!--使用URLLoader类从文本文件加载文本数据到Flex中,无法通过MXML标签使用该类-->
    <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" creationComplete="loadTxt(event)">

      <mx:Script>
        <![CDATA[
          import mx.events.FlexEvent;
            
          private var loader:URLLoader=new URLLoader();
          private function loadTxt(evt:FlexEvent):void
          {
            loader.addEventListener(Event.COMPLETE,handleData);
            loader.load(new URLRequest("test1.txt"));
          }
            
          //数据加载完毕,为文本赋值
          private function handleData(evt:Event):void
          {
            myTxt.text=evt.target.data;//URLLoader对象的data域
          }
        ]]>
      </mx:Script>
      <mx:VBox>
        <mx:Text id="myTxt" fontSize="18"/>
      </mx:VBox>
    </mx:Application>
     
    结果同上。
     
    4.加载url编码值对数据:
     
    <?xml version="1.0" encoding="utf-8"?>
    <!--使用HTTPService标签,加载值对(url编码的)到Flex的标签和组合框控件-->
    <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" creationComplete="svc.send();">
      <mx:Style>
        Application{fontSize:14px;}
      </mx:Style>
      <mx:HTTPService id="svc" url="test2.txt" resultFormat="flashvars"/>
      <mx:HBox>
        <mx:Label text="{svc.lastResult.lbl}"/>
        <mx:ComboBox dataProvider="{svc.lastResult.jobs.split(',')}" />
      </mx:HBox>
    </mx:Application>
     
    test2.txt:
     
    lbl=职位&jobs=网页设计师,软件工程师,项目经理
     
    结果:
     
     
    5.使用HTTPService类加载值对:
     
    <?xml version="1.0" encoding="utf-8"?>
    <!--使用HTTPService类,加载URL编码数据-->
    <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" creationComplete="loadVal(event);">
      <mx:Style>
        Application{fontSize:12px;color:#ff0000;}
      </mx:Style>
      <mx:Script>
        <![CDATA[
          import mx.rpc.events.ResultEvent;
          import mx.events.FlexEvent;
          import mx.rpc.http.HTTPService;
          private var svc:HTTPService=new HTTPService();
          private function loadVal(evt:FlexEvent):void
          {
            svc.url="test2.txt";
            svc.resultFormat="flashvars";//结果格式-值对
            svc.addEventListener(ResultEvent.RESULT,handleResult);
            svc.send();
          }
          private function handleResult(evt:ResultEvent):void
          {
            lbl.text=svc.lastResult.lbl;
            combox.dataProvider=svc.lastResult.jobs.split(",");
          }
        ]]>
      </mx:Script>
      <mx:HBox>
        <mx:Label id="lbl"/>
        <mx:ComboBox id="combox"/>
      </mx:HBox>
    </mx:Application>
     
    结果:
     
     
     
    6.使用URLLoader类加载值对数据:
     
    <?xml version="1.0" encoding="utf-8"?>
    <!--使用URLLoader类,加载URL编码数据-->
    <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" creationComplete="loadVal(event);">
      <mx:Style>
        Application{font-size:14px;color:green;}
      </mx:Style>
      <mx:Script>
        <![CDATA[
          import mx.events.FlexEvent;
          import flash.net.URLLoader;
            
          private var loader:URLLoader=new URLLoader();
          private function loadVal(evt:FlexEvent):void
          {
            loader.addEventListener(Event.COMPLETE,handleComplete);
            loader.load(new URLRequest("test2.txt"));
          }
          private function handleComplete(evt:Event):void
          {
            var value:URLVariables=new URLVariables(evt.target.data);
            lbl.text=value.lbl;
            combox.dataProvider=value.jobs.split(",");
          }
        ]]>
      </mx:Script>
      <mx:HBox>
        <mx:Label id="lbl"/>
        <mx:ComboBox id="combox"/>
      </mx:HBox>
    </mx:Application>
     
    结果:

关键字