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