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