(1)正在执行其回调函数的图形对象的句柄。在用户的回调函数中使用该句柄以引用回调对象。
(2)事件数据结构。它对于某些回调函数可能是空的,或包含该对象的属性说明中的具体信息。
无论何时执行作为特定触发操作结果的回调函数,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,'--','*'))
用户可以将回调函数分配给特定对象的属性或定义该类型所有对象的默认回调函数。
要定义所有线型对象的ButtonDownFcn,可在根级别设置默认值。
(1)使用groot函数指定对象层次结构的根级别。
(2)定义MATLAB路径上的回调函数。
(3)将引用该函数的函数句柄分配给defaultLineButtonDownFcn。
set(groot,'defaultLineButtonDownFcn',@lineCallback)
默认值仍然被分配给MATLAB会话。用户可以在startup.m文件中进行默认值分配。
没接触过MATLAB编程的读者可能会认为本章内容读起来比较晦涩难懂,但看不懂也没有关系,随着学习后文的大量示例,再返回来看的时候,就会觉得本章内容简单、易懂。