Package flash.utils (点击进入adobe livedocs查看)
Class public class Proxy
Inheritance Proxy Object
Subclasses AbstractService, DescribeTypeCacheRecord, ListCollectionView, ObjectProxy
Proxy类可以让您重载各种在对象上进行操作的原有行为(例如获取和修改成员的值).
Proxy 类没有构造函数,所以您别想得到他的实例.相反的,正当方法是是在Proxy的子类中覆盖方法,例如利用getProperty重载方法以及产生自定义方 法.如果您在Proxy的子类中尝试使用未被重载的Proxy类的方法,则会抛出例外.也就是说对于Proxy类的方法,您只有在重载之后才可以使用.
您 要紧记一点,您重载Proxy类的方法会抛出一个不可交互例外.这是因为您的代码(比如有in, is, delete等操作符的)没有加入错误预处理,除非您确信您的方法不会抛出错误,Adobe建议您普遍使用try...catch语句来防止致命错误的产 生.
在AS3中Proxy类替代了AS2中Object.__resolve 和Object.addPropery的功能特性(此二者在AS3已经不可用).AS2中的Object.addProperty()方法允许您动态的创 建get/set方法.虽然AS3提供了get/set方法供您在编译环节使用,但使用Proxy类是动态的给对象添加get/set方法的唯一手段.
为 了避免在公共命名空间中发生致命冲突,Proxy类的方法被放进了flash_proxy命名空间中.
将要作为name参数传入属于 Proxy子类的方法中的变量,您使用字符串或者QName都可以(若命名空间被使用的话).
Protected Methods
callProperty(name:*, ... rest):*
重载某个对象的方法.
(宝 宝入:这里的name不是指定要重载的方法,而是所有对本对象(即'this')的所有方法的调用都会交给callProperty来处理,您在 callProperty函数中设计哪个函数需要重载以及如何重载的;或者说callProperty并没有重载了什么,而是callProperty函 数的内容定义了重载的一切细节. )
deleteProperty(name:*):Boolean
重载要求删 除成员的方法.
getDescendants(name:*):*
重载对派生操作符的使用.
getProperty(name:*):*
重 载查询成员的值.
hasProperty(name:*):Boolean
重载以成员名为依据在对象中进行查询是包含指定的成员 的方法.
isAttribute(name:*):Boolean
查询一个QName是否同时被标记成属性了.
nextName(index:int):String
使用成员的索引从被代理的对象成员中检索出相应成员的名称.
nextNameIndex(index:int):int
使 用序号来检索被代理的对象成员.
nextValue(index:int):*
使用被代理的成员序号来查询成员的值.
setProperty(name:*, value:*):void
重载各种对成员的赋值行为.
付:flash_proxy命名空间
此命名空间用于定 义Proxy类的方法。Proxy类的方法都在他们自己的命名空间中,这么做的目的是为了避免在如下情形中出现命名冲突:您的Proxy子类拥有的实例方 法名和Proxy类的方法名重合.
AS3没有了watch方法,偶实在很不爽
自己想了好久没有想出如何在AS3中实现
虽然可以在AS工程中导入FLEX工 程的SWC来使用[Bindable]
但仍旧不及watch方法的便捷
----想要写一些能自动跟踪变量值工作的AS3东东出来
在 AS2中只要让使用者把作为数据来源的变量引用指定到我的类的一个prop上就可以了
(自己的类中代码写的是:
.........
obj.parent.watch( obj,....... )
使用者只要来一句:
xxx.dataSource = '_level0.a.b.variable'
就轻松完成数据绑定了!
)
但现在要怎样 实现这样方便的功能呢?
虽然希望不是很大,但偶还是不死心----AS3的dataProvider好像可以做到使用者随便指定一个变量 就可以去监视的
数据侦听~你令我魂牵梦萦