Flex记录用户名SharedObject

Flex项目中需要用到当用户登录成功后记录用户名方便下次登录,下面是简单Demo:

<?xml version="1.0" encoding="utf-8"?>
 <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
                xmlns:s="library://ns.adobe.com/flex/spark"
                xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600">
     <fx:Declarations>
         <!-- 将非可视元素(例如服务、值对象)放在此处 -->
     </fx:Declarations>
     <fx:Script>
         <![CDATA[
             /**
              *SharedObject参考《Actionscript3.0 CookBook》第十七章 数据持久性
              */
             import mx.collections.ArrayCollection;
             
             private var FUsersDataShareObj:SharedObject  = SharedObject.getLocal("UsersData");
             
             /**记录本地保存的用户名  */
             public var allUsers:ArrayCollection=new ArrayCollection();
             
             /**
              * 保存用户名到本地
              * */
             protected function saveUserName():void{
                 /**选择不保存用户名*/
                 if(svName.selected==false)
                     return;
                     
                 var aUserName:String=userTI.text;
                 
                 var mUsersDataArr:Array=new Array();
                 
                 if(FUsersDataShareObj.data.Users!=null)                 
                     mUsersDataArr=FUsersDataShareObj.data.Users as Array;
                 
                 /**保存未记录的用户名*/
                 if(mUsersDataArr.indexOf(aUserName)<0) 
                     mUsersDataArr.push(aUserName);    
                 
                 /**保存*/
                 FUsersDataShareObj.data.Users=mUsersDataArr;
                 FUsersDataShareObj.flush();   
             }
             
             /**
              * 获取所有保存的用户名
              * */
             protected function getUserName():void{
                 var mUsersArr:Array=new Array();
                 mUsersArr=FUsersDataShareObj.data.Users as Array; 
                 if(mUsersArr==null || mUsersArr.length==0){         
                     return;
                 }
                 if(allUsers !=null || allUsers.length>0){         
                     allUsers.removeAll();
                 }
                 
                 for(var i:int=0;i<mUsersArr.length;i++){  
                     allUsers.addItem(mUsersArr[i]);
                 }
             }
             
             /**
              * 显示list,根据输入过滤数据
              * */
             private function showList():void{
                 /**保持数据源绑定的数据*/
                 var dataArray:ArrayCollection = new ArrayCollection();
                 
                 if(dataArray.source.length == 0){
                     dataArray = allUsers ;
                 }
                 /**如果数据源为空则返回*/
                 if(dataArray==null || dataArray.source.length == 0){
                     return;
                 }
                 /**获取查询的数据*/
                 var empDataProvider:ArrayCollection = new ArrayCollection();
                 var i:int=0;
                 
                 for(i= 0;i< dataArray.length;i++){
                     if((dataArray[i] is String) && (dataArray[i]!=null) && (dataArray[i].indexOf(userTI.text) != -1))
                     {
                         /**首先保证dataArray[i]是字符串且不为空*/
                         empDataProvider.addItem(dataArray[i]);
                     }
                 }
                 userList.dataProvider=empDataProvider;
                 
                 if (empDataProvider.length>0){
                     if(empDataProvider.length<=5){
                         userList.rowCount=empDataProvider.length;
                     }else{
                         userList.rowCount=5;
                     }
                     userList.visible=true;               
                 }else{
                     userList.visible=false; 
                 }  
             } 
             
             /**
              * 焦点转移,隐藏List
              * */
             protected function hideList():void{
                 if(userList.visible==false){
                     return;
                 }
                 
                 /**焦点转移到userList,用于选择用户名时*/
                 if(this.stage.focus==userList){
                     
                 }else{/**焦点转移到其他*/
                     userList.visible=false;
                 }
             }
             
             /**
              * 清除本地所有保存的用户名
              * */
             protected function clearUserName():void{
                 FUsersDataShareObj.clear();
             }
             /**
              * 选择已经保存的用户名
              * */
             protected function selectUserName():void{
                 userTI.text=userList.selectedItem.toString();
                 userList.visible=false; 
             }
 
         ]]>
     </fx:Script>
     
     <s:Panel x="19" y="19" width="409" height="270" title="登录Demo" click="hideList()">
         <s:Button x="190" y="45.5" label="登录" click="saveUserName()"/>
         <s:TextInput x="54" y="45" id="passwordTI"/>
         <s:TextInput x="54" y="15" id="userTI" change="showList()" doubleClick="showList()" focusOut="hideList()" focusIn="getUserName()"/>
         <mx:List x="54" y="{userTI.y+userTI.height}" width="128" id="userList" visible="false" click="selectUserName()"/>
         <s:Button x="272" y="46" label="清除缓存" click="clearUserName()"/>
         <s:CheckBox x="190" y="17" label="记住用户名" id="svName" selected="true"/>
         <s:Label x="9" y="20" text="用户名"/>
         <s:Label x="21" y="50" text="密码"/>
     </s:Panel>
 </s:Application>


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值