ButtonDownFcn,在Matlab中有一个参数

时间:2012-07-20 22:36:33

标签: function matlab user-interface event-handling callback

我有一个补丁,我已经包含在下面,我想在补丁中添加一个额外的ButtonDownFcn。当我执行第二个选项时代码不起作用我得到许多输出参数。

原始补丁

for i = 1:10
    counter = counter+1;
    hpatch(counter) = patch([x(17) x(18) x(1) x(1)],[y(17) y(18) y(1) y(1)],[0 0 0 0],...
    'Parent',hAx,'ButtonDownFcn', ['winopen(''' file(counter) ''');']));
end

新的所需补丁

for i = 1:10
    counter = counter+1;
    hpatch(counter) = patch([x(17) x(18) x(1) x(1)],[y(17) y(18) y(1) y(1)],[0 0 0 0],...
    'Parent',hAx,'ButtonDownFcn', ['winopen(''' file(counter) ''');'],...
    'ButtonDownFcn', @saveClickData(counter));
end

这是函数

saveClickData(counter)

应该是这样吗?:

saveClickData(source,event)

1 个答案:

答案 0 :(得分:1)

尝试:

patch(X,Y,Z, 'ButtonDownFcn',{@saveClickData, counter})

然后将回调函数定义为:

function saveClickData(src,evt,counter)
    winopen( file(counter) );

    %# do additional stuff..
end

确保将此函数定义为嵌套函数,以便它可以访问其父函数工作区,包括file变量。