Proxy类是AS3中的一个用来覆盖元运算符的类。Proxy类没有构造器,不能被实例化,只能通过继承来使用(类似于抽象类)。
Proxy类的基本用法如下:
package
{
import flash.utils.Proxy;
import flash.utils.flash_proxy;
dynamic public class Temp extends Proxy
{
override flash_proxy function XXXX(XXX):XXX
{…}
}
}
1, 写一个类继承Proxy;
2, 记得要导入Proxy和flash_proxy,后者在Flex Builder的自动提示中没有找到;
3, 使用override flash_proxy function来开始你的覆盖方法。
在上面的例子中,XXXX(XXX):XXX处可用的方法如下:(按帮助文档中的方法翻译)
callProperty(name:*, … rest):*
调用一个该类中不存在的方法的时候执行。
deleteProperty(name:*):Boolean
删除一个该类中不存在的对象的时候执行。
getDescendants(name:*):*
调用descendant accessor运算符的时候执行。descendant accessor运算符是两个连续的“.”号。
getProperty(name:*):*
调用一个该类中不存在的变量的时候执行。
hasProperty(name:*):Boolean
执行类的hasOwnProperty方法时,如果查询的属性名称在类中未有定义,则调用此方法。hasOwnProperty是Object对象的方法,所以所有的类都有此方法。
isAttribute(name:*):Boolean
未知。Checks whether a supplied QName is also marked as an attribute.
nextName(index:int):String
nextNameIndex(index:int):int
nextValue(index:int):*
这三个基本上是一起用的,在for in和for each循环中获取下一个值。nextValue用于for each,nextName用于for in。在获取之前都会执行一次nextNameIndex。如果返回的int值是0,表示循环结束。否则,会根据nextNameIndex的返回int来获取name或者value。
setProperty(name:*, value:*):void
当给对象中一个未定义的属性赋值的时候,执行此方法。