Предположим, что вы хотите создать функцию обратного вызова прослушивателя, которая имеет доступ к определенной информации, когда событие происходит. В этом примере показано, как создать пользовательские данные о событиях.
События предоставляют информацию функциям обратного вызова прослушивателя путем передачи аргумента данных о событиях в указанную функцию. По умолчанию 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 callbackThe value of Prop1 is overflowing! Its value was: 5 Its current value is: 15