События являются уведомлениями, который возражает широковещательной передаче в ответ на что-то, что происходит, такие как изменение значения свойства или взаимодействие с пользователем с прикладной программой. Прослушиватели выполняют функции, когда уведомлено, что мероприятие происходит. Используйте события, чтобы передать изменения в объектах. Прослушиватели отвечают путем выполнения функции обратного вызова.
Для получения дополнительной информации смотрите Событие и Концепции прослушивателя.
При использовании событий и прослушивателей:
Только классы handle
могут задать события и прослушиватели.
Событие Define называет в блоке events
определения класса (События и Синтаксис Прослушивателей).
Используйте атрибуты события, чтобы задать доступ к событию (Атрибуты События).
Вызовите указатель метод handle.notify
, чтобы инициировать событие. Уведомление о событии широковещательно передает именованное событие ко всем прослушивателям, указанным для этого события.
Используйте указатель метод handle.addlistener
, чтобы связать прослушиватель объекта источника события. MATLAB® уничтожает прослушиватель, когда источник события уничтожается.
Используйте указатель метод handle.listener
, чтобы создать прослушиватели, которые не связываются с жизненным циклом объекта источника события. Этот подход полезен, когда источник события и прослушиватели заданы в различных компонентах, которые вы хотите смочь добавить, удалить, или изменить независимо. Ваш код приложения управляет жизненным циклом объекта прослушивателя.
Функции обратного вызова прослушивателя должны задать по крайней мере два входных параметра — указатель на объект источника события и данные о событиях (См. Синтаксис Коллбэка Прослушивателя для получения дополнительной информации).
Измените данные, переданные каждому коллбэку прослушивателя путем разделения на подклассы класса event.EventData
.
События MATLAB Defines для слушания наборов свойств и запросов. Для получения дополнительной информации смотрите, Прислушиваются к Изменениям в Значениях свойств.
Все объекты указателя задают событие под названием ObjectBeingDestroyed
. MATLAB инициировал это событие прежде, чем вызвать деструктор класса.
Задайте имя события в блоке events
кода:
classdef ClassName < handle ... events EventName end ... end
Например, MyClass
задает событие под названием StateChange
:
classdef MyClass < handle events StateChange end end
Инициируйте событие с помощью класса handle
метод notify
:
classdef ClassName < handle
...
events
EventName
end
...
methods
function anyMethod(obj)
...
notify(obj,'EventName
');
end
end
end
Любая функция или метод могут инициировать событие для определенного экземпляра класса, задающего событие. Например, вызовы метода triggerEvent
notify
, чтобы инициировать событие StateChange
:
classdef MyClass < handle events StateChange end methods function triggerEvent(obj) notify(obj,'StateChange') end end end
Инициируйте событие StateChange
с методом triggerEvent
:
obj = MyClass; obj.triggerEvent
Задайте прослушиватель с помощью класса handle
метод handle.listener
или handle.addlistener
. Передайте указатель на функцию для функции обратного вызова прослушивателя с помощью одного из этих синтаксисов:
— для обычной функции.addlistener(SourceOfEvent,'EventName',@functionName)
— для метода addlistener(SourceOfEvent,'EventName',@Obj.methodName)
.Obj
— для статического метода класса addlistener(SourceOfEvent,'EventName',@ClassName.methodName)
.ClassName
ListenerObject = addlistener(SourceOfEvent,'EventName
',@listenerCallback);
addlistener
возвращает объект прослушивателя. Входные параметры:
— Объект класса, который задает событие. Событие инициировано на этом объекте.SourceOfEvent
Имя события задало в классе блок EventName
events
кода.
— указатель на функцию, ссылающийся на функцию, которая выполняется в ответ на событие.@listenerCallback
Например, создайте объект прослушивателя для события StateChange
:
function lh = createListener(src) lh = addlistener(src,'StateChange',@handleStateChange) end
Задайте функцию обратного вызова для прослушивателя. Функция обратного вызова должна принять как первые два аргумента объект источника события и объект данных о событиях:
function handleStateChange(src,eventData) ... end