Flex记录用户名SharedObject

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

  1 <?xml version="1.0" encoding="utf-8"?>
  2 <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
  3                xmlns:s="library://ns.adobe.com/flex/spark"
  4                xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600">
  5     <fx:Declarations>
  6         <!-- 将非可视元素(例如服务、值对象)放在此处 -->
  7     </fx:Declarations>
  8     <fx:Script>
  9         <![CDATA[
 10             /**
 11              *SharedObject参考《Actionscript3.0 CookBook》第十七章 数据持久性
 12              */
 13             import mx.collections.ArrayCollection;
 14             
 15             private var FUsersDataShareObj:SharedObject  = SharedObject.getLocal("UsersData");
 16             
 17             /**记录本地保存的用户名  */
 18             public var allUsers:ArrayCollection=new ArrayCollection();
 19             
 20             /**
 21              * 保存用户名到本地
 22              * */
 23             protected function saveUserName():void{
 24                 /**选择不保存用户名*/
 25                 if(svName.selected==false)
 26                     return;
 27                     
 28                 var aUserName:String=userTI.text;
 29                 
 30                 var mUsersDataArr:Array=new Array();
 31                 
 32                 if(FUsersDataShareObj.data.Users!=null)                 
 33                     mUsersDataArr=FUsersDataShareObj.data.Users as Array;
 34                 
 35                 /**保存未记录的用户名*/
 36                 if(mUsersDataArr.indexOf(aUserName)<0) 
 37                     mUsersDataArr.push(aUserName);    
 38                 
 39                 /**保存*/
 40                 FUsersDataShareObj.data.Users=mUsersDataArr;
 41                 FUsersDataShareObj.flush();   
 42             }
 43             
 44             /**
 45              * 获取所有保存的用户名
 46              * */
 47             protected function getUserName():void{
 48                 var mUsersArr:Array=new Array();
 49                 mUsersArr=FUsersDataShareObj.data.Users as Array; 
 50                 if(mUsersArr==null || mUsersArr.length==0){         
 51                     return;
 52                 }
 53                 if(allUsers !=null || allUsers.length>0){         
 54                     allUsers.removeAll();
 55                 }
 56                 
 57                 for(var i:int=0;i<mUsersArr.length;i++){  
 58                     allUsers.addItem(mUsersArr[i]);
 59                 }
 60             }
 61             
 62             /**
 63              * 显示list,根据输入过滤数据
 64              * */
 65             private function showList():void{
 66                 /**保持数据源绑定的数据*/
 67                 var dataArray:ArrayCollection = new ArrayCollection();
 68                 
 69                 if(dataArray.source.length == 0){
 70                     dataArray = allUsers ;
 71                 }
 72                 /**如果数据源为空则返回*/
 73                 if(dataArray==null || dataArray.source.length == 0){
 74                     return;
 75                 }
 76                 /**获取查询的数据*/
 77                 var empDataProvider:ArrayCollection = new ArrayCollection();
 78                 var i:int=0;
 79                 
 80                 for(i= 0;i< dataArray.length;i++){
 81                     if((dataArray[i] is String) && (dataArray[i]!=null) && (dataArray[i].indexOf(userTI.text) != -1))
 82                     {
 83                         /**首先保证dataArray[i]是字符串且不为空*/
 84                         empDataProvider.addItem(dataArray[i]);
 85                     }
 86                 }
 87                 userList.dataProvider=empDataProvider;
 88                 
 89                 if (empDataProvider.length>0){
 90                     if(empDataProvider.length<=5){
 91                         userList.rowCount=empDataProvider.length;
 92                     }else{
 93                         userList.rowCount=5;
 94                     }
 95                     userList.visible=true;               
 96                 }else{
 97                     userList.visible=false; 
 98                 }  
 99             } 
100             
101             /**
102              * 焦点转移,隐藏List
103              * */
104             protected function hideList():void{
105                 if(userList.visible==false){
106                     return;
107                 }
108                 
109                 /**焦点转移到userList,用于选择用户名时*/
110                 if(this.stage.focus==userList){
111                     
112                 }else{/**焦点转移到其他*/
113                     userList.visible=false;
114                 }
115             }
116             
117             /**
118              * 清除本地所有保存的用户名
119              * */
120             protected function clearUserName():void{
121                 FUsersDataShareObj.clear();
122             }
123             /**
124              * 选择已经保存的用户名
125              * */
126             protected function selectUserName():void{
127                 userTI.text=userList.selectedItem.toString();
128                 userList.visible=false; 
129             }
130 
131         ]]>
132     </fx:Script>
133     
134     <s:Panel x="19" y="19" width="409" height="270" title="登录Demo" click="hideList()">
135         <s:Button x="190" y="45.5" label="登录" click="saveUserName()"/>
136         <s:TextInput x="54" y="45" id="passwordTI"/>
137         <s:TextInput x="54" y="15" id="userTI" change="showList()" doubleClick="showList()" focusOut="hideList()" focusIn="getUserName()"/>
138         <mx:List x="54" y="{userTI.y+userTI.height}" width="128" id="userList" visible="false" click="selectUserName()"/>
139         <s:Button x="272" y="46" label="清除缓存" click="clearUserName()"/>
140         <s:CheckBox x="190" y="17" label="记住用户名" id="svName" selected="true"/>
141         <s:Label x="9" y="20" text="用户名"/>
142         <s:Label x="21" y="50" text="密码"/>
143     </s:Panel>
144 </s:Application>
posted @ 2012-06-28 16:13  logzh  阅读(496)  评论(0编辑  收藏  举报