主要内容

监听改变属性值

创建属性的听众

为处理类,您可以定义为预先声明属性事件侦听器(命名:预设,PostSet,PreGet,PostGet)。创建监听器的命名事件:

  • 指定SetObservable和/或GetObservable财产属性。

  • 定义回调函数

  • 创建属性侦听器通过包括属性的名称和事件调用addlistener侦听器

  • 如果有必要,子类event.data创建一个专门的事件数据对象传递给回调函数。

  • 防止执行回调,如果新值与当前值相同(见作业时,属性值是不变的)。

设置属性属性来启用属性事件

在属性块中,启用SetObservable属性。您可以定义预设PostSet听众对这个块中定义的属性:

属性(SetObservable)陈述PropTwo……结束

定义为财产事件回调函数

侦听器MATLAB时执行回调函数®事件触发属性。定义回调函数有两个特定参数,传递到函数时自动调用的侦听器:

如果必要的话,你可以通过附加参数。这往往是简单定义这个方法静态因为这两个参数包含它们的属性中最必要的信息。

例如,假设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事件

  • 财产PropTwoPostSet事件

你可以定义其他事件的监听器或其他属性使用类似的方法。没有必要为每个侦听器使用相同的回调函数。看到meta.propertyevent.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))结束结束结束结束

相关的话题