事件通知广播对象发生,如属性值变化或用户与应用程序交互。听众告知感兴趣的事件发生时执行函数。使用事件沟通更改对象。听众的反应通过执行回调函数。
有关更多信息,请参见事件和监听器的概念。
当使用事件和监听器:
只有处理
类可以定义事件和监听器。
定义的事件名称事件
类定义的块(事件和监听器的语法)。
使用事件属性来指定访问事件(事件属性)。
调用处理handle.notify
触发事件的方法。事件通知广播命名事件侦听器注册这个事件。
使用处理handle.addlistener
方法夫妇一个监听器到事件源对象。MATLAB®破坏事件的侦听器当源被摧毁。
使用处理handle.listener
方法来创建监听器不耦合的生命周期事件源对象。这种方法是有用的在事件源和侦听器被定义在不同的组件,您希望能够添加、删除或修改。您的应用程序代码控制侦听器对象生命周期。
侦听器回调函数必须定义至少有两个输入参数——事件源对象处理事件数据(见侦听器回调的语法的更多信息)。
修改数据传递给每个侦听器回调通过子类化event.EventData
类。
MATLAB定义了听属性集和查询事件。有关更多信息,请参见监听改变属性值。
所有处理对象定义一个事件命名ObjectBeingDestroyed
。MATLAB触发这个事件之前调用类的析构函数。
定义一个事件的名称事件
代码块:
classdef类名称<处理…事件EventName结束…结束
例如,MyClass
定义了一个事件命名StateChange
:
classdefMyClass <处理事件StateChange结束结束
classdef类名称<处理…事件EventName结束…方法函数anyMethod(obj)…通知(obj,”EventName
”);结束结束结束
任何函数或方法可以触发事件类的特定实例定义的事件。例如,triggerEvent
方法调用通知
触发的StateChange
事件:
classdefMyClass <处理事件StateChange结束方法函数triggerEvent (obj)通知(obj,“StateChange”)结束结束结束
触发StateChange
事件的triggerEvent
方法:
obj = MyClass;obj.triggerEvent
定义一个侦听器使用处理
类handle.addlistener
或handle.listener
方法。通过一个函数处理的侦听器回调函数使用这些语法:
addlistener (SourceOfEvent。”
——对一个普通的函数。EventName
”,@functionName
)
addlistener (SourceOfEvent。”
——的方法EventName
”,@Obj.methodName
)
。Obj
addlistener (SourceOfEvent。”
——对一个类的静态方法EventName
”,@ClassName.methodName
)
。类名称
ListenerObject= addlistener (SourceOfEvent,”EventName
”@listenerCallback);
addlistener
返回侦听器对象。输入参数:
类的一个对象,定义了事件。这个对象的事件触发。SourceOfEvent
——事件中定义的类的名称EventName
事件
代码块。
@
——一个函数句柄引用函数执行的事件。listenerCallback
例如,创建一个监听器对象StateChange
事件:
函数lh = createListener (src) lh = addlistener (src,“StateChange”@handleStateChange)结束
为侦听器定义回调函数。回调函数必须接受作为前两个参数事件源对象和事件数据对象:
函数eventData handleStateChange (src)…结束