これらの関数を使用すると、MAXScript 内からメッセージ ボックスや「はい/いいえ」の問い合わせダイアログ ボックスを表示できます。
messageBox <message_string> [ title:<window_title_string>] [ beep:<boolean>]
メッセージの文字列と[OK]ボタンを含むモーダル メッセージ ボックスを表示します。メッセージ ボックス ウィンドウのタイトルは、
title:
キーワード パラメータで設定できます。
beep:
キーワード パラメータを使用すると、ビープ音を鳴らすかどうかを制御できます。このパラメータの既定値は、
true
です。
queryBox <message_string> [ title:<window_title_string>] [ beep:<boolean>]
messageBox()
関数が作成するメッセージ ボックスに似たモーダル メッセージ ボックスを表示します。ただし、このモーダル メッセージ ボックスには、[はい]ボタンおよび[いいえ]ボタンが付いています。
queryBox()
関数は、このメッセージ ボックスで[はい]ボタンをクリックした場合は
true
、[いいえ]ボタンをクリックした場合は
false
を返します。
yesNoCancelBox <message_string> [ title:<window_title_string>] [ beep:<boolean>]
messageBox()
関数が作成するメッセージ ボックスに似たモーダル メッセージ ボックスを表示します。ただし、このモーダル メッセージ ボックスには、[はい]ボタン、[いいえ]ボタン、および[キャンセル]ボタンが付いています。
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 つの式だけを含むことになり、正しい順序で実行されるようになります。
|