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

조회 수: 3 (최근 30일)
高木 範明
高木 範明 2023년 10월 23일
댓글: 高木 範明 2023년 10월 24일
例えば、次のようなクリックの都度、コールバック関数を呼ぶルーチンがあった場合、
クリックの回数(何回目)をコールバック関数に渡す方法をおしえていただけないでしょうか?
この例だと、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일
早々のご教示をありがとうございます。
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개)

카테고리

Help CenterFile Exchange에서 対話型コントロールとコールバック에 대해 자세히 알아보기

제품


릴리스

R2023a

Community Treasure Hunt

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

Start Hunting!