exponenta event banner

addlistener

Класс: дескриптор

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

Синтаксис

el = addlistener(hSource,EventName,callback)
el = addlistener(hSource,PropertyName,EventName,callback)
addlistener(___)

Описание

el = addlistener(hSource,EventName,callback) создает прослушиватель для события EventName при срабатывании на исходном объекте, hSource.

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

el = addlistener(hSource,PropertyName,EventName,callback) создает прослушиватель для одного из предопределенных событий свойств. Существует четыре предопределенных события свойств:

addlistener(___) создает объект прослушивателя без дескриптора. Этот синтаксис можно использовать с любым из предыдущих входных синтаксисов.

Имя событияСобытие происходит
PreSet

Непосредственно перед установкой значения свойства перед вызовом метода доступа set

PostSet

Сразу после установки значения свойства

PreGet

Непосредственно перед обслуживанием запроса значения свойства перед вызовом метода доступа get

PostGet

Сразу после возврата значения свойства в запрос

Входные аргументы

развернуть все

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

Имя события, инициируемого на исходных объектах, указанное в кавычках с учетом регистра. Для событий свойств имя события является одним из четырех предопределенных событий свойств.

Типы данных: char | string

Имя свойства, событие свойства которого инициирует прослушиватель, указанное как одно из следующих значений:

  • Символьный вектор или массив ячеек символьных векторов, где каждый символьный вектор является именем свойства, определенного для объектов в hSource

  • Скаляр meta.property объект

  • Массив meta.property объекты

Прослушиватели могут подключаться к событиям свойств в динамических свойствах только в том случае, если hSource является скалярным. Если hSource является нескалярным, то свойства должны принадлежать классу hSource и не может включать динамические свойства (которые не являются частью определения класса).

Класс, определяющий исходное свойство, должен установить значение GetObservable и SetObservable атрибуты свойства, позволяющие прослушивать события свойства.

Обратный вызов прослушивателя, указанный как дескриптор функции

Типы данных: function_handle

Выходные аргументы

развернуть все

Объект прослушивателя, созданный addlistener, указанный в качестве дескриптора для listener или event.proplistener объект.

Примеры

развернуть все

Создание прослушивателя свойств для Color свойство графического объекта figure окно.

fig = figure;
propListener = addlistener(fig,'Color','PostSet',@(src,evnt)disp('Color changed'));

Установка значения Color свойство для yellow. Установка свойства запускает PostSet событие свойства на рисунке. Объект источника события представляет собой конкретную фигуру, на которую ссылается дескриптор fig.

set(fig,'Color','yellow')

Совет

  • Переопределение или удаление переменной, содержащей дескриптор прослушивателя (например, el) не удаляет прослушиватель. Объект события (hSource) все еще имеет ссылку на event.listener объект. addlistener связывает жизненный цикл прослушивателя с объектом, который является источником события.

  • Хотя прослушиватель привязан к жизненному циклу источника события, прослушиватель продолжает существовать после того, как источник события будет уничтожен, когда:

    • Одна или несколько ссылок на прослушиватель находятся в других переменных, включая дескриптор прослушивателя, если он был указан при создании.

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

  • Чтобы удалить прослушиватель, удалите объект прослушивателя, возвращенный addlistener. Например,

    delete(el)

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

  • Чтобы определить прослушиватель, не связанный с объектом события, используйте event.listener непосредственно для создания прослушивателя.

Альтернативы

Если жизненный цикл объекта-прослушивателя должен быть независимым от жизненного цикла исходного объекта, используйте listener для создания прослушивателей.

Представлен в R2008a