mx.utils
public dynamic class ObjectProxy
继承ObjectProxy Inheritance Proxy Inheritance Object
实现 IExternalizable, IPropertyChangeNotifier

该类提供跟踪对此代理管理的项目进行的更改的功能。任意数量的对象都可通过使用 addEventListener() 方法“侦听”对该对象的更改。



公共属性
 属性定义方
 Inheritedconstructor : Object
对类对象或给定对象实例的构造函数的引用。
Object
 Inheritedprototype : Object
[静态] 对类或函数对象的原型对象的引用。
Object
  uid : String
此对象的唯一标识符。
ObjectProxy
受保护的属性
 属性定义方
  dispatcher : EventDispatcher
对该代理的 EventDispatcher 的引用。
ObjectProxy
  notifiers : Object
该代理侦听更改的属性更改通知器的 hashmap,映射的键是属性名称。
ObjectProxy
  object : Object
[只读 (read-only)] 被代理的对象。
ObjectProxy
  propertyList : Array
包含代理对象的所有属性名称的列表。
ObjectProxy
  proxyClass : Class
指示当代理复杂属性时创建何种类型的代理。
ObjectProxy
  type : QName
与此对象相关联的限定类型名称。
ObjectProxy
公共方法
 方法定义方
  
ObjectProxy(item:Object = null, uid:String = null, proxyDepth:int = -1)
使用指定的对象、ID 和代理深度初始化该代理。
ObjectProxy
  
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
注册事件侦听器对象,以便侦听器能够接收事件通知。
ObjectProxy
  
将事件调度到事件流中。
ObjectProxy
  
检查是否为特定事件类型注册了任何事件侦听器。
ObjectProxy
 Inherited
指示对象是否已经定义了指定的属性。
Object
 Inherited
指示 Object 类的实例是否在指定为参数的对象的原型链中。
Object
  
在更新复杂属性时调用。
ObjectProxy
 Inherited
指示指定的属性是否存在、是否可枚举。
Object
  
由于 Flex 仅使用 ObjectProxy 来包装匿名对象,因此服务器 flex.messaging.io.ObjectProxy 实例将自身序列化为将作为无格式 ActionScript 对象返回的映射。
ObjectProxy
  
removeEventListener(type:String, listener:Function, useCapture:Boolean = false):void
删除事件侦听器。
ObjectProxy
 Inherited
设置循环操作动态属性的可用性。
Object
 Inherited
返回指定对象的字符串表示形式。
Object
 Inherited
返回指定对象的原始值。
Object
  
检查是否用此 对象或其任何始祖为指定事件类型注册了事件侦听器。
ObjectProxy
  
由于 Flex 仅对其包装的内部 ActionScript 对象进行序列化,因此服务器 flex.messaging.io.ObjectProxy 将使用该匿名对象的内容填充自身并对用户显示为映射。
ObjectProxy
受保护的方法
 方法定义方
  
callProperty(name:*, ... rest):*
返回具有指定名称的代理对象的方法值。
ObjectProxy
  
删除代理对象上的指定属性并向处理函数发送删除通知。
ObjectProxy
  
getComplexProperty(name:*, value:*):*
为子类提供一个位置,以覆盖对复杂属性(该属性需要代理或菊花链用于事件浮升)的管理方式。
ObjectProxy
  
返回代理对象的指定属性值。
ObjectProxy
  
setProperty(name:*, value:*):void
更新代理对象上的指定属性并向处理函数发送更新通知。
ObjectProxy
  
该方法创建一个由代理对象的所有属性名称构成的数组。
ObjectProxy
属性详细信息
dispatcher属性
protected var dispatcher:EventDispatcher

对该代理的 EventDispatcher 的引用。

notifiers属性 
protected var notifiers:Object

该代理侦听更改的属性更改通知器的 hashmap,映射的键是属性名称。

object属性 
object:Object  [只读 (read-only)]

被代理的对象。



实现
    object_proxy function get object():Object
propertyList属性 
protected var propertyList:Array

包含代理对象的所有属性名称的列表。后代需要通过覆盖 setupPropertyList() 方法填写该列表。

proxyClass属性 
protected var proxyClass:Class

指示当代理复杂属性时创建何种类型的代理。子类应适当地分配该值。

type属性 
type:QName  [读写]

与此对象相关联的限定类型名称。



实现
    object_proxy function get type():QName
    object_proxy function set type(value:QName):void
uid属性 
uid:String  [读写]

此对象的唯一标识符。



实现
    public function get uid():String
    public function set uid(value:String):void
构造函数详细信息
ObjectProxy()构造函数
public function ObjectProxy(item:Object = null, uid:String = null, proxyDepth:int = -1)

使用指定的对象、ID 和代理深度初始化该代理。

参数
item:Object (default = null) — 要代理的对象。如果未指定项目,将构造并分配一个匿名对象。
 
uid:String (default = null) — 包含该对象实例唯一 ID 的字符串。由于每个对象都必须提供标识自身的唯一方式,因此对于遵从 IPropertyChangeNotifier 是必需的。如果未指定值,将分配一个随机 ID。
 
proxyDepth:int (default = -1) — 一个整数,指示属性访问期间应在复杂对象图形中的多少层创建代理。默认值为 -1,表示“代理到无限深度”。

示例
如何使用示例
import mx.events.PropertyChangeEvent;
      import mx.utils.ObjectUtil;
      import mx.utils.ObjectProxy;
      import mx.utils.StringUtil;
           var a:Object = { name: "Tyler", age: 5, ssnum: "555-55-5555" };
      var p:ObjectProxy = new ObjectProxy(a);
      p.addEventListener(PropertyChangeEvent.PROPERTY_CHANGE, updateHandler);
      p.name = "Jacey";
      p.age = 2;
      delete p.ssnum;
           // handler function
      function updateHandler(event:PropertyChangeEvent):void
      {
          trace(StringUtil.substitute("updateHandler('{0}', {1}, {2}, {3}, '{4}')",
                                         event.kind,
                                         event.property,
                                         event.oldValue,
                                         event.newValue,
                                         event.target.uid));
      }
           // trace output
      updateHandler('opUpdate', name, Jacey, '698AF8CB-B3D9-21A3-1AFFDGHT89075CD2')
      updateHandler('opUpdate', age, 2, '698AF8CB-B3D9-21A3-1AFFDGHT89075CD2')
      updateHandler('opDelete', ssnum, null, '698AF8CB-B3D9-21A3-1AFFDGHT89075CD2')
方法详细信息
addEventListener()方法
public function addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void

注册事件侦听器对象,以便侦听器能够接收事件通知。有关详细信息(包括参数的说明),请参阅 flash.events.EventDispatcher 类中的 addEventListener()

参数

type:String
 
listener:Function
 
useCapture:Boolean (default = false)
 
priority:int (default = 0)
 
useWeakReference:Boolean (default = false)

另请参见

callProperty()方法 
override flash_proxy function callProperty(name:*, ... rest):*

返回具有指定名称的代理对象的方法值。

参数

name:* — 正被调用的方法的名称。
 
... rest — 一个数组,指定所调用方法的参数。

返回
* — 所调用方法的返回值。
deleteProperty()方法 
override flash_proxy function deleteProperty(name:*):Boolean

删除代理对象上的指定属性并向处理函数发送删除通知。

参数

name:* — 通常是包含属性名称的字符串,也可能是 QName(其中属性名称通过检查 localName 属性获得)。

返回
Boolean — 指示是否删除属性的布尔值。
dispatchEvent()方法 
public function dispatchEvent(event:Event):Boolean

将事件调度到事件流中。有关详细信息,请参阅 flash.events.EventDispatcher 类。

参数

event:Event — 调度到事件流中的 Event 对象。如果正在重新调度事件,则会自动创建此事件的一个克隆。在调度了事件后,其 target 属性将无法更改,因此您必须创建此事件的一个新副本以能够重新调度。

返回
Boolean — 如果成功调度了事件,则返回 true。值 false 表示失败或对事件调用了 preventDefault()

另请参见

getComplexProperty()方法 
object_proxy function getComplexProperty(name:*, value:*):*

为子类提供一个位置,以覆盖对复杂属性(该属性需要代理或菊花链用于事件浮升)的管理方式。

参数

name:* — 通常是包含属性名称的字符串,也可能是 QName(其中属性名称通过检查 localName 属性获得)。
 
value:* — 属性值。

返回
* — 属性值或 ObjectProxy 实例。
getProperty()方法 
override flash_proxy function getProperty(name:*):*

返回代理对象的指定属性值。

参数

name:* — 通常是包含属性名称的字符串,也可能是 QName(其中属性名称通过检查 localName 属性获得)。

返回
* — 属性的值。在某些实例中,该值可能为一个 ObjectProxy 实例。
hasEventListener()方法 
public function hasEventListener(type:String):Boolean

检查是否为特定事件类型注册了任何事件侦听器。这样,您就可以确定 对象在事件流层次结构中的哪个位置改变了对事件类型的处理。有关详细信息,请参阅 flash.events.EventDispatcher 类。

参数

type:String — 事件的类型

返回
Boolean — 如果注册了指定类型的侦听器,则返回 true,否则返回 false

另请参见

propertyChangeHandler()方法 
public function propertyChangeHandler(event:PropertyChangeEvent):void

在更新复杂属性时调用。

参数

event:PropertyChangeEvent — 已更改的事件对象。

readExternal()方法 
public function readExternal(input:IDataInput):void

由于 Flex 仅使用 ObjectProxy 来包装匿名对象,因此服务器 flex.messaging.io.ObjectProxy 实例将自身序列化为将作为无格式 ActionScript 对象返回的映射。然后,可以将 object_proxy 对象属性设置为该值。

参数

input:IDataInput — 从中对 ObjectProxy 进行反序列化的源对象。

removeEventListener()方法 
public function removeEventListener(type:String, listener:Function, useCapture:Boolean = false):void

删除事件侦听器。如果没有向 EventDispatcher 对象注册任何匹配的侦听器,则对此方法的调用没有任何效果。有关详细信息,请参阅 flash.events.EventDispatcher 类。

参数

type:String — 事件的类型。
 
listener:Function — 要删除的侦听器对象。
 
useCapture:Boolean (default = false) — 指出是否为捕获阶段或目标阶段和冒泡阶段注册了侦听器。如果对捕获阶段以及目标和冒泡阶段都注册了侦听器,则需要调用 removeEventListener() 两次才能删除这两个侦听器,一次调用时将 useCapture() 设置为 true,另一次调用时将 useCapture() 设置为 false

另请参见

setProperty()方法 
override flash_proxy function setProperty(name:*, value:*):void

更新代理对象上的指定属性并向处理函数发送更新通知。

参数

name:* — 包含属性名称的对象,该属性应在代理对象上更新。
 
value:* — 代理对象上应设置的值。

setupPropertyList()方法 
protected function setupPropertyList():void

该方法创建一个由代理对象的所有属性名称构成的数组。如果后代希望向此列表添加更多属性,则必须覆盖该方法。在对 propertyList 属性进行任何更改之前,请确保先调用 super.setupPropertyList

willTrigger()方法 
public function willTrigger(type:String):Boolean

检查是否用此 对象或其任何始祖为指定事件类型注册了事件侦听器。将指定类型的事件调度给此 对象或其任一后代时,如果在事件流的任何阶段触发了事件侦听器,则此方法返回 true。有关详细信息,请参阅 flash.events.EventDispatcher 类。

参数

type:String — 事件的类型。

返回
Boolean — 如果将触发指定类型的侦听器,则返回 true,否则返回 false

另请参见

writeExternal()方法 
public function writeExternal(output:IDataOutput):void

由于 Flex 仅对其包装的内部 ActionScript 对象进行序列化,因此服务器 flex.messaging.io.ObjectProxy 将使用该匿名对象的内容填充自身并对用户显示为映射。

参数

output:IDataOutput — 从中对 ObjectProxy 进行反序列化的源对象。