exponenta event banner

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

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

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

События предоставляют информацию функциям обратного вызова прослушивателя, передавая аргумент данных события указанной функции. По умолчанию MATLAB ® передает event.EventData объект для обратного вызова прослушивателя. Этот объект имеет два свойства:

  • EventName - имя события, инициированного этим объектом.

  • Source - дескриптор объекта, запускающего событие.

Предоставление дополнительной информации для обратного вызова прослушивателя путем подкласса event.EventData класс.

  • Определите свойства подкласса, содержащие дополнительные данные.

  • Определите конструктор, принимающий дополнительные данные в качестве аргументов.

  • Установите ConstructOnLoad атрибут класса.

  • Используйте конструктор подкласса в качестве аргумента для notify метод запуска события.

Определение и инициирование события

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 объект. 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

Связанные темы