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

5 visualizaciones (últimos 30 días)
高木 範明
高木 範明 el 23 de Oct. de 2023
Comentada: 高木 範明 el 24 de Oct. de 2023
例えば、次のようなクリックの都度、コールバック関数を呼ぶルーチンがあった場合、
クリックの回数(何回目)をコールバック関数に渡す方法をおしえていただけないでしょうか?
この例だと、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 comentarios
高木 範明
高木 範明 el 23 de Oct. de 2023
早々のご教示をありがとうございます。
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');
高木 範明
高木 範明 el 24 de Oct. de 2023
本件、自己解決しました。
グローバル変数(例えば変数click)を定義して、コールバック呼び出し側で、app.click=0とし、
コールバック側で、app.click=app.click+1にすれば、カウントアップできました。
MATLABのグローバル変数の扱い方がまだよくわかっておらず、的外れな質問になったことを
お詫びいたします。

Iniciar sesión para comentar.

Respuestas (0)

Categorías

Más información sobre 対話型コントロールとコールバック en Help Center y File Exchange.

Productos


Versión

R2023a

Community Treasure Hunt

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

Start Hunting!