Предположим, что вы хотите создать функцию обратного вызова прослушивателя, которая имеет доступ к определенной информации, когда событие имеет место. В этом примере показано, как путем создания пользовательских данных о событиях.
События предоставляют информацию функциям обратного вызова прослушивателя путем передачи аргумента данных о событиях заданной функции. По умолчанию, MATLAB® передает event.EventData
возразите против коллбэка прослушивателя. Этот объект имеет два свойства:
EventName
— Имя события инициировано этим объектом.
Source
— Указатель объекта, инициировавшего событие.
Предоставьте дополнительную информацию коллбэку прослушивателя путем разделения на подклассы event.EventData
класс.
Задайте свойства в подклассе, чтобы содержать дополнительные данные.
Задайте конструктора, который принимает дополнительные данные как аргументы.
Установите ConstructOnLoad
атрибут класса.
Используйте конструктора подкласса в качестве аргумента к notify
метод, чтобы инициировать событие.
SimpleEventClass
задает метод набора свойств (см. Методы Набора свойств), от которого он инициировал событие, если свойство установлено в значение, превышающее определенный предел. Метод набора свойств выполняет эти операции:
Сохраняет исходное значение свойства
Устанавливает свойство на заданное значение
Если заданное значение больше 10, метод установки инициировал 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
объект. 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