本页对应的英文页面已更新,但尚未翻译。 若要查看最新内容,请点击此处访问英文页面。

回调定义

指定回调的方法

要使用回调属性,将回调代码赋予该属性。使用以下技术之一:

  • 引用函数执行的函数句柄。

  • 包含函数句柄和其他参数的元胞数组

  • 计算为有效 MATLAB® 表达式的字符向量。MATLAB 在基础工作区中计算该字符向量。

不建议将回调定义为字符向量。将函数指定为函数句柄的用法可以让 MATLAB 为回调函数提供重要信息。

有关详细信息,请参阅 回调函数语法

回调函数语法

图形回调函数必须至少接受两个输入参数:

  • 正在执行其回调的图形对象的句柄。在您的回调函数中使用该句柄以引用回调对象。

  • 事件数据结构,它对于某些回调可能是空的,或包含该对象的属性说明中的具体信息。

无论何时执行作为特定触发操作结果的回调函数,MATLAB 都会调用回调函数并传递两个参数给该函数。

例如,为 plot 函数创建的线条定义一个名为 lineCallback 的回调函数。通过使用 MATLAB 路径上的 lineCallback 函数,使用 @ 运算符将函数句柄分配给 plot 创建的每个线条的 ButtonDownFcn 属性。

plot(x,y,'ButtonDownFcn',@lineCallback)

定义接受两个输入参数的回调。使用第一个参数引用正在执行其回调的特定线条。使用该参数设置线条的 Color 属性:

function lineCallback(src,~)
   src.Color = 'red';
end

第二个参数对 ButtonDownFcn 回调为空。~ 字符表示该参数未使用。

传递额外输入参数

要定义回调函数的额外输入参数,将参数添加到函数定义,同时保持默认参数和其他参数的正确顺序:

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,'--','*'))

相关信息

有关使用匿名函数的详细信息,请参阅匿名函数

有关将类方法用作回调的详细信息,请参阅Class Methods for Graphics Callbacks

有关 MATLAB 如何解决多回调执行,请参阅对象定义回调的 BusyActionInterruptible 属性。

将回调定义为默认值

您可以将回调分配给特定对象的属性或定义该类型所有对象的默认回调。

要定义所有线型对象的 ButtonDownFcn,在根级别设置默认值。

  • 使用 groot 函数指定对象层次结构的根级别。

  • 定义 MATLAB 路径上的回调函数。

  • 将引用该函数的函数句柄分配给 defaultLineButtonDownFcn

set(groot,'defaultLineButtonDownFcn',@lineCallback)

默认值仍然分配给 MATLAB 会话。您可以在 startup.m 文件中进行默认值分配。