首页 > 网站 > WEB开发 > 正文

14.9.绑定到一个动态类的属性

2024-04-27 13:52:19
字体:
来源:转载
供稿:网友
14.9.1. 问题
你需要绑定一个目标的属性到一个目标并不明确的动态类对象的一个属性上。
14.9.2. 解决办法
创建一个mx.utils.Proxy 的字类,实现mx.events.IEventDspatcher 接口,覆盖flash_proxy 名字空间的setProperty 方法,来分发propertyChange 事件。
14.9.3. 讨论
Proxy 类允许你使用点标语法来存取属性。为了能有效的与动态属性的引用进行工作,在你的子类的实现中重写flash_prox 名字空间中的方法getProperty 和setProperty。如果类中的这些方法被定义为共有的类,则你可以自定义来存取这些属性。然后,动态的属性引用不足以创建绑定,因为数据绑定是基本事件系统的。

因为绑定是通过事件来触发的,创建一个Proxy 类是适合来进行数据绑定的,你必须同时实现IEventDispatcher 以及它们的接口。为了使动态属性的引用能被进行绑定,类需要用关键字dynamic 来进行声明,同时使用[Bindable]标记来进行定义,且设置标签的event 属性值为propertyChange:
+展开
-ActionScript
[Bindable(event="propertyChange")]
dynamic public class Properties extends Proxy implements IEventDispatcher {}


一个不错的例子,当你需要创建一个自定义的Proxy 类用来存取一个从内部源加载的数据,通过在重载的setProperty 和getProperty 方法创建一定的规则,而不是去编写一个分析器,会填充属性在一个自定义的对象从加载的数据中。

例如,一个程序加载下面的XML 数据,且这些XML 数据的属性是能进行存取和修改的:
+展开
-XML
<properties>
<property id="name"><![CDATA[Tom Waits]]></property>
<property id="album"><![CDATA[Rain Dogs]]></property>
<property id="genre"><![CDATA[Rock]]></property>
</properties>
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表