コールバック関数に、​クリックするたびにそ​のクリック回数を渡す​方法を教えてください​。

例えば、次のようなクリックの都度、コールバック関数を呼ぶルーチンがあった場合、
クリックの回数(何回目)をコールバック関数に渡す方法をおしえていただけないでしょうか?
この例だと、click=10しか渡すことができませんが、これを1,2,3,・・・とクリックの度にカウントアップできないでしょうか?
【メイン】
Ia_start = 1;
Ia_incre = 1;
Ia_end = 5;
Counter = 0;
click = 10;
for Ia = Ia_start : Ia_incre : Ia_end
Counter = Counter + 1;
fp(Counter) = fimplicit(app.UIAxes,@(id,iq) id.^2+iq.^2 - Ia.^2);
set(fp(Counter), 'ButtonDownFcn',@(src, event) lineCallback(app,src,event,click);
end
【コールバック】
methods (Access = private)
function lineCallback(app,src,event,click)

4 个评论

高木 範明
高木 範明 2023-10-23
転記ミスがありました。まことに申し訳ありません。
誤) set(fp(Counter), 'ButtonDownFcn',@(src, event) lineCallback(app,src,event,click)
正) set(fp(Counter), 'ButtonDownFcn',@(src, event) lineCallback(app,src,event,click))
Atsushi Ueno
Atsushi Ueno 2023-10-23
>コールバックは、いずれもソースとイベントの 2 つの入力引数を受け入れます。これらの 2 つ以外の追加の入力引数を受け入れるコールバックを指定するには、cell 配列を使用します。......(以下省略)
とあります。
余談ですが、質問のプログラムは同じ UIAxes に対し fimplicit 関数を5回実行し、得られた ImplicitFunctionLine オブジェクトを5個の配列に格納しています。hold onを書かないと5重の楕円が描画されませんし、'ButtonDownFcn'の設定を5回繰り返しても1回実行するのと同じになると思います。
コールバック関数が呼び出されるのは、紐付けたUI コンポーネント(四角形内のどこか)がクリックされた時であり、UIAxes内でクリックした座標に近い曲線を判定するには、その為のロジックが必要になると思います。
高木 範明
高木 範明 2023-10-23
早々のご教示をありがとうございます。
holdについては、転記忘れで申し訳ありません。追記いたしました。
複数の円(今回は5つですが実際は20以上)のいろいろな点をクリックして
その座標(数十点)をUITableに書き出すことを考えています。
現在、座標はうまく書き出せていますが、
その時に、何回目のクリックであるかもUITableに記録したいのです。
これからご教示頂いたページをこれから熟読いたしますが、クリック(コールバックの呼び出し回数)
のカウントのやり方がよくわからず、質問した次第です。
【メイン】
Ia_start = 1;
Ia_incre = 1;
Ia_end = 5;
Counter = 0;
click = 10;
hold(app.UIAxes,'on');
for Ia = Ia_start : Ia_incre : Ia_end
Counter = Counter + 1;
fp(Counter) = fimplicit(app.UIAxes,@(id,iq) id.^2+iq.^2 - Ia.^2);
set(fp(Counter), 'ButtonDownFcn',@(src, event) lineCallback(app,src,event,click);
end
hold(app.UIAxes,'off');
高木 範明
高木 範明 2023-10-24
本件、自己解決しました。
グローバル変数(例えば変数click)を定義して、コールバック呼び出し側で、app.click=0とし、
コールバック側で、app.click=app.click+1にすれば、カウントアップできました。
MATLABのグローバル変数の扱い方がまだよくわかっておらず、的外れな質問になったことを
お詫びいたします。

请先登录,再进行评论。

回答(0 个)

类别

帮助中心File Exchange 中查找有关 モデル、ブロックおよび端子のコールバック 的更多信息

产品

版本

R2023a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!