このチュートリアルでは、MAXScript のタイマ UI コントロールの代わりに、System.Windows.Forms.Timer dotNetObject を使用する方法を示します。MAXScript コントロールの代わりに、この DotNet オブジェクト バージョンを使用すれば、特定の時間間隔で MAXScript 関数を実行するために MAXScript ユーザ インタフェースを作成して開く必要がありません。
dotNetObject:System.Windows.Forms.Timer
全体の流れ
DotNet タイマ オブジェクトが存在しない場合は、作成します。
関数の呼び出し回数を示すカウンタを定義します。
タイマによって定期的に呼び出される MAXScript 関数を定義します。
関数を呼び出すイベント ハンドラを登録します。
タイマ間隔を設定します。
タイマを開始します。
例
if theTimer == undefined then (
theTimer = dotNetObject "System.Windows.Forms.Timer"
counter = 20
fn printTime = (
counter-=1
if counter < 1 then (
print "stopping"
theTimer.stop()
theTimer = undefined
)
else (
print localTime
)
)
dotnet.addEventHandler theTimer "tick" printTime
theTimer.interval = 1000
theTimer.start()
)
リスナー出力の例:
undefined
OK
"2022-07-05 2:57:07 PM"
"2022-07-05 2:57:08 PM"
"2022-07-05 2:57:09 PM"
"2022-07-05 2:57:10 PM"
"2022-07-05 2:57:11 PM"
"2022-07-05 2:57:12 PM"
"2022-07-05 2:57:13 PM"
"2022-07-05 2:57:14 PM"
"2022-07-05 2:57:15 PM"
"2022-07-05 2:57:16 PM"
"2022-07-05 2:57:17 PM"
"2022-07-05 2:57:18 PM"
"2022-07-05 2:57:19 PM"
"2022-07-05 2:57:20 PM"
"2022-07-05 2:57:21 PM"
"2022-07-05 2:57:22 PM"
"2022-07-05 2:57:23 PM"
"2022-07-05 2:57:24 PM"
"2022-07-05 2:57:25 PM"
"stopping"
if theTimer == undefined then (
theTimer
が既に定義されているかどうかを確認します(スクリプトが既に実行されている場合など)。確認しない場合、新しいタイマ オブジェクトに theTimer
が再割り当てされ、オリジナル オブジェクトへの参照が失われます。
theTimer = dotNetObject "System.Windows.Forms.Timer"
タイマを作成します。
counter = 20
20 ティックのタイマを実行します。
fn printTime = (
counter-=1
if counter < 1 then (
print "stopping"
theTimer.stop()
theTimer = undefined
)
else (
print localTime
)
)
タイマによって呼び出される MAXScript 関数を定義します。この関数はカウンタを減少させ、カウンタが 0 になったらタイマを停止します。
dotnet.addEventHandler theTimer "tick" printTime
関数を呼び出す ON TICK イベント ハンドラを追加します。
theTimer.interval = 1000
ティック間隔を 1 秒 (1000 ミリ秒) に設定します。
theTimer.start()
タイマを開始します。