時間変更コールバック機能

ユーザがタイム スライダをドラッグしたり、アニメーションを再生した場合など、現在の 3ds Max アニメーション時間が変更された場合にはいつでも 1 つまたは複数の関数を呼び出すように登録することができます。以下の関数によって、このコールバックを登録または登録解除します。

registerTimeCallback <fn>
unRegisterTimeCallback <fn> | undefined )

関数は必要に応じていくつでも登録できます。各関数は時間が変更されるたびに個別に呼び出されます。登録する関数に引数を指定することはできません。これらの関数は、MAXScript システム変数 currentTime を使用して、更新された現在の時間にアクセスできます。

例:

    fn time_p = print currentTime
    registerTimeCallback time_p

上記の例では、登録された関数は、ユーザがタイム スライダを移動させたりアニメーションを再生すると、現在の時間をリスナー ウィンドウに出力します。

時間変更コールバックをグローバルに有効または無効にすることもできます。

<boolean> timeCallbacksEnabled()

時間変更コールバックが有効かどうかを返します。3ds Max 2021.1 Update 以降で使用可能です。

<boolean> enableTimeCallbacks()
<boolean> disableTimeCallbacks()

時間変更コールバックを有効または無効にします。これらの関数は、現在の時間変更コールバックの有効状態を返します。したがって、たとえばコールバックが既に無効になっているときに disableTimeCallbacks() を呼び出すと、false が返されます。 3ds Max 2021.1 Update 以降で使用可能です。

showregisteredTimeCallbacks [to:stream] [asArray:<boolean>]

関数名、関数が定義されているソース ファイル(該当する場合)、およびソース ファイル内の行番号が一覧表示される、登録済み時間変更コールバックのリストを返します。オプションの to 引数を指定すると、出力は指定した出力ストリームに送信されます。オプションの asArray 引数を指定すると、戻り値は配列の配列としてフォーマットされます。ここで、登録済みの各コールバック関数の最初の要素はコールバック関数名、2 番目の要素はコールバック関数が定義されるソースファイルの名前と行番号(関数がファイル内で定義されていない場合は空の文字列)、3 番目の要素はコールバックの登録解除に使用できる実際の関数の値です。

特に注意すべき点

例:

    fn time_cb = print currentTime
    fn tcb = time_cb()
    registerTimeCallback tcb

この場合、登録されたコールバック関数 tcbtcb は実際のコールバック time_cb を(定義されているグローバル変数を参照して)呼び出します。したがって、必要に応じて何回でも time_cb() を再定義することができ、コールバックによって常に最新の定義が呼び出されます。これは、コールバックの開発とデバッグを行っている場合に便利です。