Flex调用远程XML数据

来源:互联网 发布:在线解码软件 编辑:程序博客网 时间:2024/05/16 15:54

首先要有一个简易的服务器,建立一个站点,然后站点下存放 

1:crossdomain.xml 这个是跨与域策略文件,用于指定域通过Flash Player访问本域的资源(如果服务器在本机就没有这个必要)但是远程的话就要(建议要)

文件内容:

<cross-domain-policy>

  <allow-access-from domain="*" />

</cross-domain-policy>

*是指所有的域通过 Flash Player都可以访问本域的资源。

2:由于这个是做用户登陆的,所以要有一个login.xml供外面访问。当然名字可以随便起。

Xml的内容参看图片。

Flex调用远程XML数据 - wge861011 - 简单的个人主页

代码以及解释如下

<mx:HTTPService id="loginRPC" url="http://localhost/login.xml" result="loginRPCResult(event)"/>

url:远程xml文件的url

Result:接收loginRPCResult(event) 返回的结果

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical"

      backgroundGradientAlphas="[1.0, 1.0]"

      backgroundGradientColors="[#04D99F, #09B9FA]"

      themeColor="#F8FBFD" verticalAlign="middle" creationComplete="loginRPC.send()">

creationComplete:初始话界面时触发,loginRPC.send()向目标服务器提出请求并接收数据。

 

<mx:Script>

            <![CDATA[

                  import mx.rpc.events.ResultEvent;

                  import mx.collections.ArrayCollection;

                  import mx.controls.Alert;

 

                  [Bindable]

                  private var loginsList:ArrayCollection=new ArrayCollection();

 

                  private function loginRPCResult(event:ResultEvent):void

                  {

                        loginsList=event.result.allUsers.user; //获取login.xml 中 allUsers下的user节点的信息 用 ArrayCollection接收

                  }

 

                  private function loginCheck():void

                  {                

                        if(loginsList.length!=0) //判断 loginsList是否存在user信息

                        {

                              if(this.loginsList[0].userName==user.text && this.loginsList[0].password==password.text) //判断 用户名,密码是否和login.xml中的一致

                              {

                                    this.currentState='main'; 如果是就把状态变更为 main

                              }

                              else

                              {

                                    Alert.show("Login Fail!Please Check!","AITI INFOMATION"); //否则提示错误

                              }

                        }

                        else

                        {

                                    Alert.show("Login Fail!Please Check!","AITI INFOMATION"); //提示错误

                        }

 

                  }

 

            ]]>

      </mx:Script>

 

Login触发:

                        <mx:ApplicationControlBar id="col">

                              <mx:TextInput id="user"/>

                              <mx:TextInput displayAsPassword="true" id="password"/>

                              <mx:Image id="loginImage" width="30" height="30"                             

click="loginCheck()" buttonMode="true">

                                    <mx:source>../assets/001.png</mx:source>

                              </mx:Image>

                        </mx:ApplicationControlBar>

displayAsPassword:true的话 输入框以密码框形式

click:鼠标点击事件 触发 loginCheck 的处理。

 

效果图

输入错误的用户名:

Flex调用远程XML数据 - wge861011 - 简单的个人主页

报错:

Flex调用远程XML数据 - wge861011 - 简单的个人主页

正确的用户名

Flex调用远程XML数据 - wge861011 - 简单的个人主页

跳转到main状态:

Flex调用远程XML数据 - wge861011 - 简单的个人主页

原创粉丝点击