Определение коллбэка

Способы задать коллбэки

Чтобы использовать свойства коллбэка, присвойте свойству код коллбэка. Используйте один из следующих методов:

  • Указатель на функцию, который ссылается на функцию, которая выполняется.

  • Массив ячеек, содержащий указатель на функцию и дополнительные аргументы

  • Вектор символов, который вычисляет допустимое значение 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 файл.