2017-04-27 10 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を使用することができます。

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 

とコールバック関数は次のとおりです:ここで私は'ButtonDownFcn'を使用

function callback(src,~) 
src.Children(1).Tag = 'Pressed'; 
end 
+0

私はそれが...助けるかもしれないので、私は私の計算を行う上で実行し、これまでのように頻繁に押されたかどうかを確認することができると思います。チェックの間にマウスが2回以上押された場合、コールバック関数は複数のイベントを呼び戻しますか?ありがとう! – Marta

関連する問題