为处理类,您可以定义为预先声明属性事件侦听器(命名:预设
,PostSet
,PreGet
,PostGet
)。创建监听器的命名事件:
指定SetObservable
和/或GetObservable
财产属性。
定义回调函数
创建属性侦听器通过包括属性的名称和事件调用addlistener
或侦听器
。
如果有必要,子类event.data
创建一个专门的事件数据对象传递给回调函数。
防止执行回调,如果新值与当前值相同(见作业时,属性值是不变的)。
在属性块中,启用SetObservable
属性。您可以定义预设
和PostSet
听众对这个块中定义的属性:
属性(SetObservable)陈述PropTwo……结束
侦听器MATLAB时执行回调函数®事件触发属性。定义回调函数有两个特定参数,传递到函数时自动调用的侦听器:
事件源,meta.property
对象描述的对象是事件的源属性
事件数据,event.PropertyEvent
对象包含关于事件的信息
如果必要的话,你可以通过附加参数。这往往是简单定义这个方法静态
因为这两个参数包含它们的属性中最必要的信息。
例如,假设handlePropEvents
函数是一个类的静态方法创建监听器的两个属性的另一个类的对象:
方法(静态)函数evnt handlePropEvents (src)开关src.Name情况下“陈述”%提议引发了一个事件…情况下“PropTwo”% PropTwo已经触发了一个事件…结束结束结束
另一种可能性是使用event.PropertyEvent
对象的EventName
财产的开关
声明中关键的事件名称(预设
或PostSet
在这种情况下)。
类元数据提供了更多的信息meta.property
类。
的addlistener
处理类方法使您能够将一个侦听程序连接到一个属性没有存储侦听器对象作为一个持久变量。对于财产的事件,使用four-argument版本的addlistener
。
这是一个调用addlistener
:
addlistener (EventObject,“陈述”,“PostSet”@类名称.handlePropertyEvents);
的参数是:
EventObject
——处理对象的生成事件
陈述
——属性的名称,你想听
PostSet
——事件的名称,你想听
@
——函数处理引用一个静态方法,这就需要使用类名类名称
.handlePropertyEvents
如果你的侦听器回调是一个普通的方法,而不是一个静态方法,语法是:
addlistener (EventObject,“陈述”,“PostSet”@obj.handlePropertyEvents);
在哪里obj
的处理对象定义回调方法。
如果侦听器回调函数不是类方法,通过一个函数句柄函数。假设回调函数是一个包的函数:
addlistener (EventObject,“陈述”,“PostSet”@包.handlePropertyEvents);
在传递函数作为参数的更多信息,见创建函数处理。
以下展示如何创建两个类PostSet
财产的听众——两个属性陈述
和PropTwo
。
的PropEvent
类允许属性预设
和PostSet
通过指定的事件触发SetObservable
财产属性。这些属性也可以AbortSet
属性,它可以防止财产的触发事件如果属性设置的值是一样的(见他们当前的价值作业时,属性值是不变的)。
classdefPropEvent <处理属性(SetObservable AbortSet)陈述PropTwo结束方法函数obj = PropEvent (p1, p2)如果输入参数个数> 0 obj。倡言= p1;obj。PropTwo = p2;结束结束结束结束
的PropListener
类定义了两个侦听器:
财产陈述
PostSet
事件
财产PropTwo
PostSet
事件
你可以定义其他事件的监听器或其他属性使用类似的方法。没有必要为每个侦听器使用相同的回调函数。看到meta.property
和event.PropertyEvent
参考页面中包含更多的信息回调函数的参数传递给侦听器。
classdefPropListener <处理%定义属性的听众方法函数obj = PropListener (evtobj)如果输入参数个数> 0 addlistener (evtobj,“陈述”,“PostSet”,@PropListener.handlePropEvents);addlistener (evtobj,“PropTwo”,“PostSet”,@PropListener.handlePropEvents);结束结束结束方法(静态)函数evnt handlePropEvents (src)开关src.Name情况下“陈述”sprintf (“倡言% s \ n”num2str (evnt.AffectedObject.PropOne))情况下“PropTwo”sprintf (“PropTwo % s \ n”num2str (evnt.AffectedObject.PropTwo))结束结束结束结束