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