exponenta event banner

слушатель

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

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

Синтаксис

eL = listener(hSource,EventName,callback)
eL = listener(hSource,PropertyName,EventName,callback)

Описание

eL = listener(hSource,EventName,callback) создает прослушиватель для события с именем EventName. hSource является объектом-дескриптором, который является источником события. callback - дескриптор функции, вызываемый MATLAB ® при запуске события .

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

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

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

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

PostSet

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

PreGet

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

PostGet

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

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

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

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

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

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

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

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

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

  • Скаляр meta.property объект или массив meta.property объекты, соответствующие свойствам, определенным для объектов в hSource

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

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

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

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

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

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

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

Примеры

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

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

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

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

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

Удаление объекта прослушивателя.

delete(propListener)

Совет

Жизненный цикл прослушивателя

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

delete(el)

Вызов delete для объекта прослушивателя уничтожает прослушиватель и, следовательно, событие больше не вызывает выполнение функции обратного вызова.

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

Необходимо явно уничтожить прослушиватели, созданные с помощью listener независимо от исходного объекта. Вызов метода удаления дескриптора для переменной прослушивателя (например, delete(el)) явно уничтожает прослушиватель. Переопределение или удаление переменной, содержащей прослушиватель, может удалить прослушиватель, если на него нет других ссылок. Чтобы привязать жизненный цикл прослушивателя к жизненному циклу исходного объекта события, используйте addlistener.

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

Использовать addlistener если вы хотите, чтобы MATLAB управлял жизненным циклом прослушивателя.

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