我正在使用Matlab开发一个执行多个数学运算的应用程序,单击鼠标时可以更改其参数,如下例所示。
while time<endtime
calculate_manythings;
if ~mod(time,checkmouse)
mouseinput_timeout(timemouse, gca);
change_calculation_parameters;
end
time=time+1;
end
目前,我正在定期暂停操作以检查鼠标事件,但这很慢且不实用。如何持续监控这些并同时运行代码?我可以使用parfeval使鼠标事件检查后台进程吗?例如?
非常感谢, 玛尔塔
答案 0 :(得分:0)
您可以使用callback functions。我在这里使用了'ButtonDownFcn'
:
timeinterval = 1; % seconds between mouse clicks
% generate axes with callback function
h = plot(rand(1,2),'LineWidth',6);
set(gca,'ButtonDownFcn',@callback);
% reset Tag and time
h.Tag = '';
tic;
while true
drawnow;
if strcmp(h.Tag,'Pressed') % if pressed
t = toc; % check time passed
if t >= timeinterval
% change parameters
disp('Pressed');
h.Color = rand(1,3);
% reset timer
tic;
end
% reset Tag
h.Tag = '';
end
end
并且回调函数是:
function callback(src,~)
src.Children(1).Tag = 'Pressed';
end