MAXScript のメッセージ ボックスおよび問い合わせダイアログ ボックス
これらの関数を使用すると、MAXScript 内からメッセージ ボックスや「はい/いいえ」の問い合わせダイアログ ボックスを表示できます。
messageBox <message_string> [title:<window_title_string>] [beep:<boolean>]
メッセージの文字列と[OK]ボタンを含むモーダル メッセージ ボックスを表示します。メッセージ ボックス ウィンドウのタイトルは、 title: キーワード パラメータで設定できます。 beep: キーワード パラメータを使用すると、ビープ音を鳴らすかどうかをコントロールできます。このパラメータの既定値は、 true です。
queryBox <message_string> [title:<window_title_string>] [beep:<boolean>]
messageBox() 関数が作成するメッセージ ボックスに似たモーダル メッセージ ボックスを表示します。ただし、このモーダル メッセージ ボックスには、[はい](Yes)ボタンおよび[いいえ](No)ボタンが付いています。 queryBox() 関数は、このメッセージ ボックスで[はい](Yes)ボタンをクリックした場合は true 、[いいえ](No)ボタンをクリックした場合は false を返します。
yesNoCancelBox <message_string> [title:<window_title_string>] [beep:<boolean>]
messageBox() 関数が作成するメッセージ ボックスに似たモーダル メッセージ ボックスを表示します。ただし、このモーダル メッセージ ボックスには、[はい](Yes)ボタン、[いいえ](No)ボタン、および[キャンセル](Cancel)ボタンが付いています。 yesNoCancelBox() 関数は、このメッセージ ボックスでクリックされたボタンによって #yes 、 #no または #cancel のいずれかを返します。
例:
|
messageBox "You shouldn't have done that"
if queryBox "Do you want to continue?" beep:false then...
|
上記のダイアログ ボックス関数呼び出しを含むステートメントの後に発生する MAXScript ステートメントは、場合によって、実行されるべきタイミング以前に実行されることがあります。
たとえば、次のスクリプトを実行した場合を例にとります。
スクリプト:
|
for _t=0 to 3 do
(
messagebox "Press Me"
format "_t= %\n" _t
)
print "Should print last"
|
リスナーへの出力は次のとおりです。
|
_t= 0
"Should print last"
"Should print last"
_t= 1
_t= 2
_t= 3
|
メッセージ ボックスは、 _t の値がリスナーに出力される前に毎回(この例では 4 回)表示されます。
これは、バックグラウンド スレッドでコンパイルおよび実行する式をリスナーが検索するためです。上記の例には、 for ループ式と最後の print 式の 2 つがあります。 messageBox() 関数は、メイン UI スレッド内で UI イベントの発生と処理を待ち続けます。一方、コンパイラは既にコンパイルを行い、print "Should print last"
の実行準備が整っています。
このような誤った順序での実行を防ぐには、スクリプトをカッコで囲む必要があります。こうすると、スクリプトは 2 つの式ではなく 1 つの式だけを含むことになり、正しい順序で実行されるようになります。
|