События представляют изменения или действия, которые происходят в объектах. Например,
Модификация данных класса
Выполнение метода
Запрос или установка значения свойства
Разрушение объекта
В основном любое действие, которое можно обнаружить программно, может сгенерировать событие и передать информацию к другим объектам.
Классы MATLAB® задают процесс, который передает возникновение событий к другим объектам, которые отвечают на события. Модель событий прокладывает себе путь:
Класс Handle объявляет, что имя раньше представляло событие. Именование Событий
После создания объекта объявляющего событие класса присоедините прослушиватель того объекта. Управление жизненным циклом приемника
Вызов класса Handle метод notify
широковещательно передает уведомление о событии к прослушивателям. Пользователь класса определяет, когда инициировать событие. Инициирование событий
Прослушиватели выполняют функцию обратного вызова, когда уведомлено, которую имело место событие. Определение обратных вызовов прослушивателя
Можно связать прослушиватели жизненного цикла объекта, который задает событие или предельные прослушиватели существования и осциллографа объекта прослушивателя. Управление жизненным циклом приемника
Следующая схема иллюстрирует модель событий.
Существуют определенные ограничения к использованию событий:
Источник события не может гарантировать, что прослушиватели существуют при инициировании события.
Прослушиватель не может препятствовать тому, чтобы другие прослушиватели были уведомлены, который имело место событие.
Порядок, в котором выполняются прослушиватели, не задан.
Прослушиватели не должны изменять объект данных о событиях, переданный обратному вызову прослушивателя, потому что другие прослушиватели передаются этот тот же объект указателя.
События предоставляют информацию обратным вызовам прослушивателя путем передачи аргумента данных о событиях функции обратного вызова. По умолчанию MATLAB передает объект event.EventData
обратному вызову прослушивателя. Этот объект имеет два свойства:
EventName
Имя события, как задано в классе блок event
Source
— Объект, который является источником события
MATLAB передает исходный объект обратному вызову прослушивателя в необходимом аргументе данных о событиях. Используйте исходный объект, чтобы получить доступ к любой из общественных собственностей объекта из вашей функции обратного вызова прослушивателя.
Можно создать подкласс класса event.EventData
, чтобы предоставить дополнительную информацию функциям обратного вызова прослушивателя. Подкласс задал бы свойства содержать дополнительные данные и предоставить метод, чтобы создать выведенный объект данных о событиях, таким образом, это может быть передано методу notify
.
Задайте Привязанные к конкретному событию Данные, обеспечивает пример, показывающий, как настроить это данные.
Можно задать события только в классах Handle. Это ограничение существует, потому что класс значения видим только в единственном MATLAB workspace так никакой обратный вызов, или прослушиватель может иметь доступ к объекту, который инициировал событие. Обратный вызов мог иметь доступ к копии объекта. Однако доступ к копии не полезен, потому что обратный вызов не может получить доступ к текущему состоянию объекта, который инициировал событие, или вызовите любые изменения в том объекте.
Сравнение Классов Указателя и Значения предоставляет общую информацию относительно классов Handle.
Синтаксис Событий и Прослушивателей показывает синтаксис для определения класса Handle и событий.
Существует четыре предопределенных события, связанные со свойствами:
PreSet
— Инициированный непосредственно перед тем, как значение свойства установлено, прежде, чем вызвать его метод доступа набора
PostSet
— Инициированный сразу после того, как значение свойства установлено
PreGet
— Инициированный непосредственно перед тем, как запрос значения свойства обслуживается, прежде, чем вызвать получать метод доступа
PostGet
— Инициированный сразу после возврата значения свойства к запросу
Эти события предопределены и не должны быть перечислены в классе блок events
.
Когда событие свойства имеет место, обратный вызов передается объект event.PropertyEvent
. Этот объект имеет три свойства:
EventName
Имя события описано этим объектом данных
Source
— Исходный объект, класс которого задает событие, описанное по условию, возражает
AffectedObject
— Объект, свойство которого является источником для этого события (то есть, AffectedObject
содержит объект, к свойству которого или получили доступ или изменили).
Можно задать собственные данные о событиях изменения свойства путем разделения на подклассы event.EventData
Класс EventData. Класс event.PropertyEvent
является изолированным подклассом event.EventData
Данные о событиях.
Смотрите Прислушиваются к Изменениям в Значениях свойств для описания процесса для создания прослушивателей свойства.
Смотрите Прослушиватель События PostSet для примера.
См. Методы доступа к свойствам для получения информации о методах, которые управляют доступом к значениям свойств.
Прослушиватели инкапсулируют ответ на событие. Объекты прослушивателя принадлежат классу event.listener
, который является классом Handle, который задает следующие свойства:
Source
— Указатель или массив указателей объекта, который сгенерировал событие
EventName
Имя события
'callback'
Функция, чтобы выполниться, когда активированный прослушиватель получает уведомление о событии
Enabled
— Функция обратного вызова выполняется только, когда Enabled
является true
. Смотрите Включают и Отключают Прослушиватели для примера.
Recursive
— Позвольте прослушивателю инициировать то же событие, которое вызвало выполнение обратного вызова.
Recursive
является false
по умолчанию. Если обратный вызов инициировал событие, для которого он задан как обратный вызов, прослушиватель не может выполниться рекурсивно. Поэтому установите Recursive
на false
, если обратный вызов должен инициировать свое собственное событие. Установка свойства Recursive
к true
может создать ситуацию, где бесконечная рекурсия достигает предела рекурсии и инициировала ошибку.
Управление жизненным циклом приемника предоставляет более определенную информацию.