Предположим, что вы хотите создать функцию обратного вызова прослушивателя, которая имеет доступ к определенной информации, когда событие происходит. В этом примере показано, как создать пользовательские данные о событиях.
События предоставляют информацию функциям обратного вызова прослушивателя путем передачи аргумента данных о событиях в указанную функцию. По умолчанию MATLAB® передает event.EventData
объект для коллбэка прослушивателя. Этот объект имеет два свойства:
EventName
- имя события, инициируемого этим объектом.
Source
- указатель на объект, вызывающий событие.
Предоставьте дополнительную информацию для коллбэка прослушивателя путем подклассификации event.EventData
класс.
Задайте свойства в подклассе, чтобы содержать дополнительные данные.
Задайте конструктор, который принимает дополнительные данные как аргументы.
Установите ConstructOnLoad
атрибут класса.
Используйте конструктор подкласса в качестве аргумента для notify
метод для запуска события.
The SimpleEventClass
определяет метод набора свойств (см. «Методы набора свойств»), из которого он инициирует событие, если для свойства задано значение, превышающее определенный предел. Метод набора свойств выполняет следующие операции:
Сохраняет исходное значение свойства
Устанавливает свойство на заданное значение
Если заданное значение больше 10, метод set запускает Overflow
событие
Передает исходное значение свойства и другие данные о событиях в SpecialEventDataClass
объект для notify
способ.
classdef SimpleEventClass < handle properties Prop1 = 0 end events Overflow end methods function set.Prop1(obj,value) orgvalue = obj.Prop1; obj.Prop1 = value; if (obj.Prop1 > 10) % Trigger the event using custom event data notify(obj,'Overflow',SpecialEventDataClass(orgvalue)); end end end end
Данные о событиях всегда содержатся в event.EventData
объект. The SpecialEventDataClass
добавляет значение исходного свойства в данные о событиях путем подклассирования event.EventData
:
classdef (ConstructOnLoad) SpecialEventDataClass < event.EventData properties OrgValue = 0 end methods function eventData = SpecialEventDataClass(value) eventData.OrgValue = value; end end end
Чтобы послушать Overflow
событие, присоедините прослушиватель к образцу SimpleEventClass
класс. Используйте addlistener
метод для создания прослушивателя. Кроме того, необходимо задать функцию обратного вызова, чтобы прослушиватель выполнялся при запуске события.
Функция setupSEC
создает экземпляры SimpleEventClass
Класс и добавляет прослушивателя к объекту. В этом примере функция обратного вызова прослушивателя отображает информацию, которая содержится в eventData
аргумент (который является SpecialEventDataClass
объект).
function sec = setupSEC sec = SimpleEventClass; addlistener(sec,'Overflow',@overflowHandler) function overflowHandler(eventSrc,eventData) disp('The value of Prop1 is overflowing!') disp(['Its value was: ' num2str(eventData.OrgValue)]) disp(['Its current value is: ' num2str(eventSrc.Prop1)]) end end
Создайте SimpleEventClass
объект и добавить прослушиватель:
sec = setupSEC;
sec.Prop1 = 5;
sec.Prop1 = 15; % listener triggers callback
The value of Prop1 is overflowing! Its value was: 5 Its current value is: 15