События являются уведомлениями, который возражает широковещательной передаче в ответ на что-то, что происходит, такие как изменение значения свойства или взаимодействие с пользователем с прикладной программой. Прослушиватели выполняют функции, когда уведомлено, что мероприятие происходит. Используйте события, чтобы передать изменения в объектах. Прослушиватели отвечают путем выполнения функции обратного вызова.
Для получения дополнительной информации смотрите Событие и Концепции прослушивателя.
При использовании событий и прослушивателей:
Только handle
классы могут задать события и прослушиватели.
Событие Define называет в events
блок определения класса (События и Синтаксис Прослушивателей).
Используйте атрибуты события, чтобы задать доступ к событию (Атрибуты События).
Вызовите указатель notify
метод, чтобы инициировать событие. Уведомление о событии широковещательно передает именованное событие ко всем прослушивателям, указанным для этого события.
Используйте указатель addlistener
метод, чтобы связать прослушиватель объекта источника события. MATLAB® уничтожает прослушиватель, когда источник события уничтожается.
Используйте указатель 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
класс addlistener
или listener
метод. Передайте указатель на функцию для функции обратного вызова прослушивателя с помощью одного из этих синтаксисов:
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) % src - handle to object that triggered the event % eventData - event.EventData object containing % information about the event. ... end
Для получения дополнительной информации смотрите Синтаксис Коллбэка Прослушивателя.