ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

コールバック定義

コールバックを指定する方法

コールバック プロパティを使用するには、コールバック コードをプロパティに代入します。次のいずれかの手法を使用します。

  • 実行する関数を参照する関数ハンドル

  • 関数ハンドルと追加の引数を含む cell 配列

  • 有効な MATLAB® 式として評価される文字ベクトル。MATLAB はベース ワークスペースの文字ベクトルを評価します。

コールバックを文字ベクトルとして定義することは推奨されていません。関数ハンドルとして指定された関数を使用すると、MATLAB でコールバック関数に重要な情報を渡すことができます。

詳細は、コールバック関数の構文を参照してください。

コールバック関数の構文

グラフィックス コールバック関数は、少なくとも 2 つの入力引数を受け入れなければなりません。

  • コールバックを実行しているオブジェクトのハンドル。このハンドルをコールバック関数内で使用して、コールバック オブジェクトを参照します。

  • イベント データ構造体。これは、コールバックによっては空であっても、またはそのオブジェクトのプロパティの説明に記述されている特定の情報を含んでいても構いません。

特定のトリガー アクションの結果としてコールバックを実行すると、MATLAB によってコールバック関数が呼び出され、これら 2 つの引数がその関数に渡されます。

たとえば、関数 plot で作成されたラインに対して lineCallback というコールバック関数を定義するとします。関数 lineCallback を MATLAB パス上に置くと、@ 演算子を使用して plot で作成された各ラインの ButtonDownFcn プロパティにこの関数ハンドルを代入します。

plot(x,y,'ButtonDownFcn',@lineCallback)

2 つの入力引数を受け入れるようにコールバックを定義します。最初の引数を使用して、コールバックを実行中の特定のラインを参照します。この引数を使用して、ラインの Color プロパティを設定します。

function lineCallback(src,~)
   src.Color = 'red';
end

2 番目の引数は ButtonDownFcn 用に空にします。~ 文字は、この引数を使用しないことを表します。

追加の入力引数を渡す

コールバック関数に追加の入力引数を定義するには、既定の引数と追加の引数の正しい順序を維持しながら、関数定義にそれらの引数を追加します。

function lineCallback(src,evt,arg1,arg2)
   src.Color = 'red';
   src.LineStyle = arg1;
   src.Marker = arg2;
end

関数ハンドルと追加の引数からなる cell 配列をプロパティに代入します。

plot(x,y,'ButtonDownFcn',{@lineCallback,'--','*'})

追加の引数は、無名関数を使用して渡すこともできます。以下に例を示します。

plot(x,y,'ButtonDownFcn',...
    @(src,eventdata)lineCallback(src,eventdata,'--','*'))

関連情報

無名関数の使用についての詳細は、無名関数を参照してください。

コールバックとしてのクラス メソッドの使用についての詳細は、グラフィックス コールバックのクラス メソッドを参照してください。

複数のコールバック実行を MATLAB で解決する方法の詳細については、コールバックを定義するオブジェクトの BusyAction および Interruptible プロパティを参照してください。

既定値としてのコールバックの定義

特定のオブジェクトのプロパティにコールバックを代入したり、同じタイプの全オブジェクトに既定のコールバックを定義したりできます。

すべての line オブジェクトに ButtonDownFcn を定義するには、ルート レベルの既定値を設定します。

  • 関数 groot を使用して、オブジェクト階層のルート レベルを指定する。

  • コールバック関数を定義し、MATLAB パス上に置く。

  • この関数を参照する関数ハンドルを defaultLineButtonDownFcn に代入する。

set(groot,'defaultLineButtonDownFcn',@lineCallback)

MATLAB セッションで代入された既定値は維持されます。既定値の代入は、startup.m ファイルを使用して行うことができます。