Чтобы использовать свойства коллбэка, присвойте свойству код коллбэка. Используйте один из следующих методов:
Указатель на функцию, который ссылается на функцию, которая выполняется.
Массив ячеек, содержащий указатель на функцию и дополнительные аргументы
Вектор символов, который вычисляет допустимое значение MATLAB® выражение. MATLAB оценивает вектор символов в базовом рабочем пространстве.
Определение коллбэка как вектор символов не рекомендуется. Использование функции, заданной как указатель на функцию, позволяет MATLAB предоставлять важную информацию вашей функции обратного вызова.
Для получения дополнительной информации смотрите Синтаксис функции обратного вызова.
Функции обратного вызова должны принимать по крайней мере два входных параметров:
Указатель на объект, коллбэк выполняет. Используйте этот указатель в функции обратного вызова для обращения к объекту коллбэка.
Структура данных о событиях, которая может быть пустой для некоторых коллбэков или содержать конкретную информацию, которая описывается в описании свойства для этого объекта.
Всякий раз, когда коллбэк выполняется в результате определенного триггерного действия, MATLAB вызывает функцию обратного вызова и передает эти два аргумента функции.
Для примера задайте функцию обратного вызова lineCallback
для линий, созданных plot
функция. С lineCallback
функцию на пути MATLAB используйте @
оператор, чтобы назначить указатель на функцию ButtonDownFcn
свойство каждой линии, созданное plot
.
plot(x,y,'ButtonDownFcn',@lineCallback)
Задайте коллбэк, чтобы принять два входных параметров. Используйте первый аргумент для ссылки на конкретную линию, чей коллбэк выполняет. Используйте этот аргумент, чтобы задать линию Color
свойство:
function lineCallback(src,~) src.Color = 'red'; end
Второй аргумент пуст для ButtonDownFcn
коллбэк. The ~
символ указывает, что этот аргумент не используется.
Чтобы задать дополнительные входные параметры для функции обратного вызова, добавьте аргументы к определению функции, сохраняя правильный порядок аргументов по умолчанию и дополнительных аргументов:
function lineCallback(src,evt,arg1,arg2) src.Color = 'red'; src.LineStyle = arg1; src.Marker = arg2; end
Назначьте массив ячеек, содержащий указатель на функцию и дополнительные аргументы свойству:
plot(x,y,'ButtonDownFcn',{@lineCallback,'--','*'})
Можно использовать анонимную функцию, чтобы передать дополнительные аргументы. Для примера:
plot(x,y,'ButtonDownFcn',... @(src,eventdata)lineCallback(src,eventdata,'--','*'))
Для получения информации об использовании анонимных функций см. «Анонимные функции».
Для получения информации об использовании методов класса в качестве обратных вызовов смотрите Методы класса для обратных коллбэков графики.
Для получения информации о том, как MATLAB разрешает выполнение нескольких обратных вызовов, смотрите BusyAction
и Interruptible
свойства объектов, определяющих коллбэки.
Можно назначить коллбэк свойству определенного объекта или можно задать коллбэк по умолчанию для всех объектов этого типа.
Как задать ButtonDownFcn
для всех линий объектов задайте значение по умолчанию на корневом уровне.
Используйте groot
функция для определения корневого уровня иерархии объектов.
Задайте функцию обратного вызова, которая находится в пути MATLAB.
Назначьте указатель на функцию, ссылающийся на эту функцию, defaultLineButtonDownFcn
.
set(groot,'defaultLineButtonDownFcn',@lineCallback)
Значение по умолчанию остается назначенным для сеанса работы с MATLAB. Присвоение значений по умолчанию можно выполнить в startup.m
файл.