private var object:Object = {}; private var objectProxy:ObjectProxy; objectProxy = new ObjectProxy(object); objectProxy.addEventListener(PropertyChangeEvent.PROPERTY_CHANGE, updateChange); objectProxy.name = "My Object"; objectProxy.id = 31; //这二个赋值语句不会引发PropertyChangeEvent事件 object.isDebug = false; object.id = 33; //将id从33改成45,并引发PropertyChangeEvent事件 objectProxy.id = 45;
1.ObjectProxy概述
主要是为了监控一个观察对象,当这个观察对象的值发生变化时,由该类派发相应的事件。
如果不是你自己的类,你又希望绑定它,或你只是希望运行时添加绑定功能,你可以使用ObjectProxy类。
ObjectProxy封装一个没有绑定的类并在这个被绑定类的任何属性改变时派发属性改变事件,使得你能监听你程序里的该对象的属性改变。
2.ObjectProxy常见属性和方法
属性
uid : String 此对象的唯一标识符。
方法
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
注册事件侦听器对象,以便侦听器能够接收事件通知。
hasEventListener(type:String):Boolean
检查是否该对象及父对象为特定事件类型注册了任何事件侦听器。
willTrigger(type:String):Boolean
检查是否用此对象监听某种类型的事件,与hasEventListener有什么区别?
3.ObjectProxy举例
例1:ObjectProxy监控观察对象UserInfo。接着我添加了一个事件监听,来跟踪UserInfo各项的改变。
UserInfo.as
package { public class UserInfo { public var userName:String="xxx";//如果没有初值,则PropertyChangeEvent 中的oldValue为null public var password:String="123"; public function UserInfo() { } } }
ObjectProxyExam1.mxml
<?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" creationComplete="creationCompleteHandler()" minWidth="955" minHeight="600"> <s:layout> <s:VerticalLayout/> </s:layout> <fx:Declarations> <!-- 将非可视元素(例如服务、值对象)放在此处 --> </fx:Declarations> <fx:Script> <![CDATA[ import mx.events.PropertyChangeEvent; import mx.utils.ObjectProxy; import mx.utils.object_proxy; private var userInfo:UserInfo = new UserInfo(); private var objectProxy:ObjectProxy; protected function creationCompleteHandler():void { objectProxy = new ObjectProxy( userInfo ); objectProxy.addEventListener( PropertyChangeEvent.PROPERTY_CHANGE, onPropertyChange ); //这里不用写userInfo.userName,好象userName就是objectProexy的属性一样 objectProxy.userName = "EladElrom"; //objectProxy.password = "123456"; //与上面赋值效果相同 lb4.text=objectProxy.willTrigger("delete").toString();//没有监听这个事件 lb5.text=objectProxy.willTrigger(PropertyChangeEvent.PROPERTY_CHANGE).toString();//监听了这个事件 lb6.text=objectProxy.hasEventListener(PropertyChangeEvent.PROPERTY_CHANGE).toString();//监听了这个事件 } private function onPropertyChange( event:PropertyChangeEvent ):void{ lb1.text = event.newValue.toString(); lb2.text = event.oldValue.toString(); lb3.text = event.property.toString(); } ]]> </fx:Script> <s:Label id="lb1" /> <s:Label id="lb2" /> <s:Label id="lb3" /> <s:Label id="lb4" /> <s:Label id="lb5" /> <s:Label id="lb6" /> </s:Application>
运行结果
EladElrom
xxx
userName
false
true
true
发表评论
-
消息拦截器(MessageInterceptors)
2010-11-02 16:20 1049public class DeleteItemIntercep ... -
arguments
2010-11-02 11:33 737arguments 对象 在将参数传递给某个函数时,可以使用 ... -
js与flash的函数交互
2010-08-10 11:01 807flash使用的actionscript跟javascript ... -
as 传输游戏数据
2010-07-09 16:28 814AS3]利用ByteArray压缩游戏关卡数据 ByteArr ... -
Taobao Logo显示
2010-04-28 10:26 755今天看见淘宝的首页的logo居然是swf格式,然后觉得要是如果 ... -
cairngorm commands deal with lots of things
2010-03-30 14:16 678Yeah. As the best practice say ... -
关于安全认证的几点思路
2010-03-29 01:23 7091 php cookie , sig_str md5 (u ... -
compress images at client side
2010-03-28 02:55 8951. Allow user to browse for ima ... -
Flex与后台交互的几种方法详解(FlashVars、 HTTPService、URLLoader、WebService)
2010-03-25 22:11 22111.FlashVars(单向传递) A.传递:在<em ... -
flash背景平铺
2010-03-25 00:58 1014其实有很多方法实现,这里就按播放器的版本从低到高的实现方法来说 ... -
Socket通信学习资料
2009-11-27 12:33 1146Socket通信学习资料 什么是Socket?Socket协 ... -
CallLater简单解释
2009-11-18 17:11 1859目前FlashPlayer的运行机理是单线程模式,所以,在每一 ... -
Tweener _bezier 使用
2009-11-17 15:31 1254在做camera曲线运动的时候,发现新版的Tweener对_b ...
相关推荐
3. **事件处理**:当用户更改日期时,会触发事件,如`PropertyChangeEvent`,我们需要监听这些事件来响应用户的操作。 4. **国际化**:Swing支持多语言环境,日期选择器应考虑不同地区的日期格式。 5. **定制化**...
在Java编程领域,设计模式是一种解决常见问题的模板或最佳实践,它被广泛应用于构建可扩展、可维护的软件系统。"DesignPatternJava"这个主题着重于如何在Java环境中应用设计模式,特别是其中的...
它们在Java应用程序开发中扮演着重要角色,特别是在用户界面(UI)设计和企业级应用开发中。以下是对JavaBeans及其属性的详细解释: 1. **JavaBean属性**: - **Simple属性**:这是最基本的属性类型,它包含一个...
例如,每次属性值更改后,都会触发一个`PropertyChangeEvent`,包含属性名、原值和新值。 4. Constrained属性:在属性值即将改变时,允许其他与之关联的对象通过抛出`PropertyVetoException`来阻止变更。 JavaBean...
5. **事件处理**:JMF提供了事件驱动的编程模型,通过`ControllerEvent`和`PropertyChangeEvent`等事件,开发者可以监听播放状态的变化和属性的修改。 6. **多线程**:多媒体处理通常涉及多个并发操作,如解码、...
public void propertyChange(PropertyChangeEvent e) { if ("date".equals(e.getPropertyName())) { Date newDate = (Date) e.getNewValue(); // 处理新选择的日期 } } }); ``` 3. **JSpinner的使用**: - ...
这种特性使得JavaBean在Java应用程序和网页设计中(如JSP)特别有用,因为它简化了组件之间的交互。 在JavaBean规范中,实现Bound属性通常通过以下几个步骤: 1. **定义属性**:首先,你需要创建一个私有的实例...
10. **事件与数据绑定**:在Flex4中,数据绑定使得组件的属性可以自动响应数据源的变化,而这些变化通常会触发`PropertyChangeEvent`,使开发者能够更新UI。 通过学习这个“Flex4视频教程_02-01事件概述”,开发者...
标签中提到的JAVA虽然与本主题不符,但值得指出的是,Java也有类似的概念,即`java.beans.PropertyChangeSupport`类和`PropertyChangeEvent`,它们在Java Swing和JavaFX等UI框架中用于实现属性变化的通知。...
开发者可以通过`.databinding`包中的类和接口实现这一功能,如`Bindable`、`ValueProvider`和`PropertyChangeEvent`。 **8. 拓展与JFace** SWT通常与JFace库结合使用,JFace为SWT提供了更高级别的抽象,简化了UI的...
此外,`mx.events.PropertyChangeEvent`事件可用于监听属性变化,确保数据同步的正确性。 压缩包中的“FLEX数据绑定专题”可能包含以下内容: 1. **基础教程**:介绍数据绑定的基本概念,如何在MXML和ActionScript...
在Java编程中,`PropertyChangeSupport` 是一个用于实现属性更改通知机制的工具类,它在JavaBeans规范中被广泛使用。这个类帮助开发者轻松地为...通过理解和熟练运用,我们可以构建出更加灵活和可维护的Java应用程序。
源代码中会展示如何使用mx.binding.Binding类和mx.events.PropertyChangeEvent类来实现数据绑定。 5. **事件处理**:Flex组件间的交互通常通过事件触发。学习如何使用addEventListener、removeEventListener和...
在Flex开发中,数据绑定(Data Binding)是一种强大的机制,它允许UI组件的状态与应用程序的数据模型之间自动同步。数据绑定的原理是通过监听数据源的变化,并自动更新与之绑定的UI组件,反之亦然,从而简化了代码并...
public void propertyChange(PropertyChangeEvent e) { if ("date".equals(e.getPropertyName())) { Date selectedDate = (Date) e.getNewValue(); // 处理选中的日期 } } }); ``` 4. **布局管理**:将日历...
你可以使用 Flex 的 Bindding 或 PropertyChangeEvent 来实现这一目的。 5. **选择模型**:Flex Datagrid有多种选择模型,如SingleSelectionModel和MultipleSelectionModel。带复选框的Datagrid通常需要...
JavaBeans的属性有四种特殊类型:Simple、Indexed、Bound和Constrained,每种类型都有特定的功能和应用场景。 1. **Simple属性** Simple属性是最基础的属性类型,它代表一个简单的数据值,通过一对get和set方法...
为了响应首选项值的变化,开发者可以监听`PropertyChangeEvent`事件。当某个首选项值被改变时,会触发此事件。通过为`PreferenceStore`添加`IPropertyChangeListener`,开发者可以在事件发生时响应用户的选择。 在...
每当`ourString`的值通过`setString()`方法更新时,就会触发`PropertyChangeEvent`,并将事件发送给所有注册的监听器。这实现了属性变更的实时广播,增强了组件之间的交互性和响应性。 ### PropertyChangeSupport类...
当数据源发生变化时,通常会触发`PropertyChangeEvent`,数据绑定监听这些事件以决定何时更新视图。`Bindable`事件可以手动触发,以强制视图更新。 6. 动态属性绑定: Flex允许对动态创建的属性进行绑定,这在...