2017-04-27 32 views
0

我正在使用Matlab開發一個應用程序,該應用程序執行幾個數學運算,其參數可以在鼠標單擊時更改,如下例所示。如何在Matlab中檢查鼠標事件作爲後臺進程?

while time<endtime 
calculate_manythings; 
if ~mod(time,checkmouse) 
    mouseinput_timeout(timemouse, gca); 
    change_calculation_parameters; 
end 
    time=time+1; 
end 

目前,我暫時暫停操作來檢查鼠標事件,但這是慢而不切實際的。我怎樣才能不斷地監視這些並同時運行代碼?例如,我可以使用parfeval使鼠標事件檢查後臺進程嗎?

非常感謝, 瑪塔

回答

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 
+0

我認爲這可能幫助。所以我可以繼續做我的計算,並檢查是否被經常壓過。如果鼠標在檢查之間被多次按下,回調函數是否會回顧多個事件?謝謝! – Marta

相關問題