10

GUIDE を使用して MATLAB GUI を作成しました。コールバック関数を備えたスライダーがあります。「スライダーの移動時」に実行されるはずのこのコールバックは、実際にはスライダーが移動されてマウスが離されたときにのみ実行されることに気付きました。

プロットのライブ更新のために、スライダーがドラッグされているときにスクリプトを実行する方法はありますか? スクリプトが何度も実行されるのを止めるために何かが必要だと思います。

4

3 に答える 3

16

マウスの移動時にスライダーのコールバックが呼び出されていなくても、スライダーの uicontrolの'Value'プロパティ更新されています。したがって、プロパティが変更さaddlistenerれたときに特定のコールバックを実行するリスナーを作成できます。'Value'次に例を示します。

hSlider = uicontrol('Style', 'slider', 'Callback', @(s, e) disp('hello'));
hListener = addlistener(hSlider, 'Value', 'PostSet', @(s, e) disp('hi'));

スライダーを動かす'hi'と、画面に出力されます (リスナー コールバック)。マウスを離すと、'hello'出力されます (uicontrol コールバック)。

于 2011-05-17T15:30:54.347 に答える
4

記録のために、この主題はここで詳細に議論されています: http://UndocumentedMatlab.com/blog/continuous-slider-callback/ - いくつかの代替ソリューションがそこに提示されています。基本的には後者の単なるラッパーであるため、を使用するgnoviceのソリューションaddlistenerは と同等です。handle.listener alternativeaddlistener

于 2011-06-15T22:13:23.453 に答える