exponenta event banner

Обзор События и слушатели

Зачем использовать события и прослушивателей

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

Дополнительные сведения см. в разделе Концепции событий и прослушивателей.

Основные сведения о мероприятиях и слушателях

При использовании событий и прослушивателей:

  • Только handle классы могут определять события и прослушивателей.

  • Определение имен событий в events блок определения класса (синтаксис событий и прослушивателей).

  • Используйте атрибуты события для указания доступа к событию (Атрибуты события).

  • Вызовите дескриптор notify метод запуска события. Уведомление о событии передает указанное событие всем прослушивателям, зарегистрированным для этого события.

  • Использовать маркер перемещения addlistener метод для подключения прослушивателя к объекту источника события. MATLAB ® уничтожает прослушиватель при уничтожении источника события.

  • Использовать маркер перемещения listener метод для создания прослушивателей, не связанных с жизненным циклом исходного объекта события. Этот подход полезен, когда источник событий и прослушиватели определяются в различных компонентах, которые необходимо добавить, удалить или изменить независимо. Код приложения управляет жизненным циклом объекта прослушивателя.

  • Функции обратного вызова прослушивателя должны определять как минимум два входных аргумента - дескриптор объекта источника события и данные события (дополнительные сведения см. в разделе Синтаксис обратного вызова прослушивателя).

  • Изменение данных, передаваемых каждому ответному вызову прослушивателя, путем подкласса event.EventData класс.

Предопределенные события

MATLAB Определяет события для прослушивания наборов свойств и запросов. Дополнительные сведения см. в разделе Прослушивание изменений значений свойств.

Все объекты-дескрипторы определяют событие с именем ObjectBeingDestroyed. MATLAB запускает это событие перед вызовом деструктора класса.

Синтаксис события

Определите имя события в events блок кода:

classdef ClassName < handle
   ...
   events
      EventName
   end
   ...
end

Например, MyClass определяет событие с именем StateChange:

classdef MyClass < handle
   events
      StateChange
   end
end

Запуск события с помощью handle класс notify способ:

classdef ClassName < handle
   ...
   events
      EventName
   end
   ...
   methods
      function anyMethod(obj)
         ...
         notify(obj,'EventName');
      end
   end
end

Любая функция или метод может инициировать событие для определенного экземпляра класса, определяющего событие. Например, triggerEvent вызовы методов notify для запуска StateChange событие:

classdef MyClass < handle
   events
      StateChange
   end
   methods
      function triggerEvent(obj)
         notify(obj,'StateChange')
      end
   end
end

Вызовите StateChange событие с triggerEvent способ:

obj = MyClass;
obj.triggerEvent

Дополнительные сведения см. в разделе Синтаксис событий и прослушивателей.

Создать прослушиватель

Определение прослушивателя с помощью handle класс addlistenerили listener способ. Передайте дескриптор функции для функции обратного вызова прослушивателя, используя один из следующих синтаксисов:

  • addlistener(SourceOfEvent,'EventName',@functionName) - для обычной функции.

  • addlistener(SourceOfEvent,'EventName',@Obj.methodName) - для метода Obj.

  • addlistener(SourceOfEvent,'EventName',@ClassName.methodName) - для статического метода класса ClassName.

ListenerObject = addlistener(SourceOfEvent,'EventName',@listenerCallback);

addlistener возвращает объект прослушивателя. Входные аргументы:

  • SourceOfEvent - объект класса, определяющий событие. Событие инициируется для этого объекта.

  • EventName - имя события, определенного в классе; events кодовый блок.

  • @listenerCallback - дескриптор функции, ссылающийся на функцию, которая выполняется в ответ на событие.

Например, создайте объект прослушивателя для StateChange событие:

function lh = createListener(src)
   lh = addlistener(src,'StateChange',@handleStateChange)
end

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

function handleStateChange(src,eventData)
   % src - handle to object that triggered the event
   % eventData - event.EventData object containing 
   %             information about the event.   
   ...
end

Дополнительные сведения см. в разделе Синтаксис обратного вызова прослушивателя.

См. также

|

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