События - это уведомления о вещании объектов в ответ на происходящее, например, изменение значения свойства или взаимодействие пользователя с прикладной программой. Прослушиватели выполняют функции при уведомлении о возникновении интересующего события. Используйте события для передачи изменений объектам. Прослушиватели отвечают выполнением функции обратного вызова.
Дополнительные сведения см. в разделе Концепции событий и прослушивателей.
При использовании событий и прослушивателей:
Только handle классы могут определять события и прослушивателей.
Определение имен событий в events блок определения класса (синтаксис событий и прослушивателей).
Используйте атрибуты события для указания доступа к событию (Атрибуты события).
Вызовите дескриптор notify метод запуска события. Уведомление о событии передает указанное событие всем прослушивателям, зарегистрированным для этого события.
Использовать маркер перемещения addlistener метод для подключения прослушивателя к объекту источника события. MATLAB ® уничтожает прослушиватель при уничтожении источника события.
Использовать маркер перемещения listener метод для создания прослушивателей, не связанных с жизненным циклом исходного объекта события. Этот подход полезен, когда источник событий и прослушиватели определяются в различных компонентах, которые необходимо добавить, удалить или изменить независимо. Код приложения управляет жизненным циклом объекта прослушивателя.
Функции обратного вызова прослушивателя должны определять как минимум два входных аргумента - дескриптор объекта источника события и данные события (дополнительные сведения см. в разделе Синтаксис обратного вызова прослушивателя).
Изменение данных, передаваемых каждому ответному вызову прослушивателя, путем подкласса event.EventData класс.
MATLAB Определяет события для прослушивания наборов свойств и запросов. Дополнительные сведения см. в разделе Прослушивание изменений значений свойств.
Все объекты-дескрипторы определяют событие с именем 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
- имя события, определенного в классе; EventNameevents кодовый блок.
@ - дескриптор функции, ссылающийся на функцию, которая выполняется в ответ на событие.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
Дополнительные сведения см. в разделе Синтаксис обратного вызова прослушивателя.