0

我有一个包含在下面的补丁,我想在补丁中添加一个额外的 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)
4

1 回答 1

1

尝试:

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

然后定义回调函数为:

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

    %# do additional stuff..
end

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

于 2012-07-20T23:21:32.923 回答