首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 媒体动画 > flex >

flex的署理绑定类

2012-11-23 
flex的代理绑定类数据绑定不能直接使用数组,如Array,因为数组不能分发导致用户界面更新事件。ObjectProxy是

flex的代理绑定类
数据绑定不能直接使用数组,如Array,因为数组不能分发导致用户界面更新事件。
ObjectProxy是为Object准备的代理,
XMLListCollection是为XMLList准备的代理,
ArrayCollection是为Array准备的代理,这里Array有两种代理:一个是ArrayCollection(不仅支持数据绑定,还具有排序、筛选和快速数据查询等功能),另一个是ArrayList。

ObjectProxy 类

如果一个类要想使用数据绑定的功能,必须得实现IPropertyChangeNotifier接口;否则,这个对象不能够绑定的。

但是,有一些类的属性或变量,比如简单的变量,它们不能使用[Bindable]标签,也不能实现必要的接口。也就是说,

这个类属于你创建的,你可以添加[Bindable]来轻松实现绑定的功能;但若这个类不属于你,而你又想实现绑定的功能,

这时你就可以考虑使用ObjectProxy类。ObjectProxy 类包装一个非绑定类和一个属性改变就会派发的PropertyChangeEvent事件。

下面是ObjectProxy的应用例子。创建一个ObjectProxy类对象,并用非绑定类来实例化ObjectProxy,在这里我们用UserInfo这个类。

<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="1024" minHeight="768"                                     
   creationComplete="creationCompleteHandler()"> 
    
   <fx:Script>         
      <!--[CDATA[  
         import mx.events.PropertyChangeEvent; 
         import mx.utils.ObjectProxy; 
         import vo.UserInfo; 
         private var userInfo:UserInfo = new UserInfo(); 
         private var objectProxy:ObjectProxy; 
         protected function creationCompleteHandler():void 
         { 
            objectProxy = new ObjectProxy( userInfo ); 
            objectProxy.addEventListener( PropertyChangeEvent.PROPERTY_CHANGE, onPropertyChange ); 
            objectProxy.userName = "EladElrom"; 
            objectProxy.password = "123"; 
         }  
         private function onPropertyChange( event:PropertyChangeEvent ):void   
         {     
            lbl.text = event.newValue.toString(); 
         }     
      ]]-->        
   </fx:Script>   
              
   <s:Label id="lbl" />  
    
</s:Application>
[/node]

接着给实例化对象添加一个PropertyChangeEvent事件的侦听函数,并跟踪UserInfo某个条目的改变。

热点排行