Определение пользовательских данных о событиях

Требования данных о событиях класса

Предположим, что вы хотите создать функцию обратного вызова прослушивателя, которая имеет доступ к определенной информации, когда событие имеет место. В этом примере показано, как путем создания пользовательских данных о событиях.

События предоставляют информацию функциям обратного вызова прослушивателя путем передачи аргумента данных о событиях заданной функции. По умолчанию 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

Похожие темы