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