События являются уведомлениями, которые объекты транслируют в ответ на то, что происходит, например, изменение значения свойства или взаимодействие пользователя с прикладной программой. Прослушиватели выполняют функции, когда уведомляют, что происходит событие интереса. Используйте события для передачи изменений объектам. Прослушиватели отвечают, выполняя функцию обратного вызова.
Для получения дополнительной информации смотрите Событие и Концепции прослушивателя.
При использовании событий и прослушивателей:
Только 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
Дополнительные сведения см. в разделе Синтаксис коллбэке прослушивателе.