ユーティリティおよびロールアウトのプロパティ、メソッド、およびイベント ハンドラ

 

   

ユーザ インタフェースの作成 - クイック ナビゲーション

プロパティ

スクリプト ユーティリティおよびロールアウトでは、ロールアウトの現在の状態へのアクセスを提供する複数のプロパティが使用できます。

   

ロールアウト プロパティ

<rollout>.name String, read-only

ロールアウトの名前。

   

<rollout>.title String

ロールアウトのタイトル。

注:

ダイアログ バーとして登録されたロールアウトまたはロールアウト フロータのタイトルは変更できません。

   

<rollout>.open Boolean

true の場合は、ロールアウトが開いています。 false の場合は、ロールアウトが閉じています。 true または false をこのプロパティに代入し、ロールアウトを開いたりロールアップしたりできます。

注:ロールアウトがダイアログ ボックス、ダイアログ バー、または拡張ビューポートの場合、この設定は何も影響しません。これらの場合は、常に true になります。

   

<rollout>.scrollPos Integer

ロールアウトの含まれるパネルのスクロール位置。

注:

ロールアウトがダイアログ ボックス、ダイアログ バー、または拡張ビューポートの場合、このプロパティを設定しても何も影響しません。これらの場合は常に 0 になります。

   

<rollout>.height Integer

ロールアウトの高さをピクセルで取得/設定します。

注:ロールアウトが拡張ビューポート内にある場合、 . width プロパティと . height プロパティによってビューポートの幅と高さがレポートされます。この場合、プロパティは設定できません。

   

<rollout>.width Integer

ロールアウトの幅を取得/設定します。

注:

ロールアウトがロールアウト フロータ、subRollout、またはコマンド パネルの場合、このプロパティの設定は何も影響しません。

ロールアウトが拡張ビューポート内にある場合、 . width プロパティと . height プロパティによってビューポートの幅と高さがレポートされます。この場合、プロパティは設定できません。

   

<rollout>.controls Array of ui elements, read-only

ロールアウト内のすべての制御の配列を返します。

   

<rollout>.inViewport Boolean, read-only

ロールアウトが拡張ビューポート内にある場合は True を返します。

   

<rollout>.dialogBar Boolean, read-only

ロールアウトがダイアログ バーとして登録されている場合は True を返します。

   

<rollout>.inDialog Boolean, read-only

ロールアウトが createDialog <rollout> を使用して作成されたダイアログ ボックスに現在表示されている場合、 True を返します。 常時有効です。

   

<rollout_floater>.placement Name, enums:{#minimized|#maximized|#normal}

このプロパティは、ダイアログ ボックスが最小化、最大化、標準のどの状態にあるのかを取得/設定します。ロールアウトがダイアログ ボックス内に存在しないか、ダイアログ ボックスがダイアログ バーであるかビューポート内にある場合、'undefined' を返します。

ロールアウトがダイアログ ボックス内にあり、ダイアログ バーでないかビューポート内にない場合、このプロパティは有効です。このプロパティを設定する場合、ダイアログ ボックスの作成スタイル設定のサポートしていない値は無視されます。たとえば、プロパティの値を #maximized に設定した場合、createDialog のスタイル引数内で #style_maximizebox が指定されていなかったら、何のアクションも発生しません。

注:このプロパティは 3ds Max 6 以降 で使用できるようになりました。

   

<rollout>.isDisplayed Boolean, read-only

ロールアウトが現在表示されている場合は true を返し、そうでない場合は false を返します。

   

<rollout>.owner Object, read-only

スクリプト プラグインかカスタム アトリビュートによってロールアウトが表示されている場合、このプロパティにはスクリプト プラグインか CA のインスタンスが含まれます。ロールアウト イベント ハンドラでデバッガのブレークが発生したとき、スクリプト プラグインか CA のインスタンスの変数に簡単にアクセスできるようにするため、3ds Max 8 でこのプロパティが追加されました。この場合、イベント ハンドラの所有者はロールアウトなので、 getVar owner.owner を使用してスクリプト プラグインか CA のインスタンスにアクセスできます。

   

<rollout>.hwnd Integer, read-only

ロールアウトが開いている場合は、そのロールアウトのウィンドウ HWND ハンドルを格納します。ロールアウトが閉じている場合は 0 になります。

3ds Max 2011 以降 で使用可能です。

   

ロールアウト フロータ プロパティ

<rollout_floater>.title String

フロータのタイトル。

注:ダイアログ バーとして登録されたロールアウトまたはロールアウト フロータのタイトルは変更できません。

   

<rollout_floater>.open Boolean, read-only

フロータが開いていれば、 True になります。

   

<rollout_floater>.size Point2

サイズ(ピクセル)。

注:ロールアウト フロータが拡張ビューポート内にある場合、. size プロパティと . position プロパティによってビューポートのサイズと位置がレポートされます。この場合、プロパティは設定できません。

   

<rollout_floater>.pos Point2

位置(ピクセル)。

注:ロールアウト フロータが拡張ビューポート内にある場合、. size プロパティと . position プロパティによってビューポートのサイズと位置がレポートされます。この場合、プロパティは設定できません。

   

<rollout_floater>.rollouts Array of rollouts in floater, read-only

フロータ内のすべてのロールアウトの配列を返します。

   

<rollout_floater>.inViewport Boolean, read-only

フロータが拡張ビューポート内にあれば、 True になります。

   

<rollout_floater>.dialogBar Boolean, read-only

フロータがダイアログ バーとして登録されていれば、 True になります。

   

<rollout_floater>.placementName, enums:{#minimized|#maximized|#normal}

このプロパティは、ダイアログ ボックスが最小化、最大化、標準のどの状態にあるのかを取得/設定します。ロールアウトがダイアログ ボックス内に存在しないか、ダイアログ ボックスがダイアログ バーであるかビューポート内にある場合、'undefined' を返します。

このプロパティは、dialogBar でもなくビューポート内にもない Rolloutfloaters に対して有効です。

注:このプロパティは 3ds Max 6 以降 で使用できるようになりました。

注:

サブロールアウト内のロールアウトはダイアログ バーまたはビュー ウィンドウとして登録できません。ロールアウトまたはロールアウト フロータはダイアログ バーとビュー ウィンドウのどちらとしても登録できません。

スクリプト ロールアウトのロールアウト状態の保存と復元のフォームを実装するには、すべてのロールアウトの / open 状態と パネル全体の . scrollPos を、 close ハンドラの処理中に記録し、 open ハンドラで値をリセットします。

メソッド

いくつかのメソッドを使用して、ユーティリティを開いたり閉じたり、[ユーティリティ](Utilities)パネルのロールアウトの追加や削除を実行できます。これらのメソッドを次に示します。

openUtility <utility>

[ユーティリティ](Utilities)パネルでユーティリティのメイン ロールアウトを開きます。これは、MAXScript の[ユーティリティ](Utilities)パネル ロールアウトにある[ユーティリティ](Utilities)リストからユーティリティをクリックする操作と同じです。

   

closeUtility <utility>

[ユーティリティ](Utilities)パネルでユーティリティのメイン ロールアウトを閉じます。これは、このロールアウトの[閉じる](Close)ボタンをクリックする操作と同じです。

   

addRollout <rollout> [ rolledUp:<boolean> ]

ロールアウトを[ユーティリティ](Utilities)パネルに追加します。 addRollout() 関数の rolledUp: パラメータでは、ロールアップされた状態でロールアウトが追加されるかどうかを指定します。この既定値は false で、ロールアウトは完全に開いた状態で追加されます。追加のロールアウトは、 addRollout() 呼び出し順に整理されるので、呼び出す順番に注意して、希望する順序を確保してください。

   

<Point2>GetDialogSize <rollout>

ウィンドウのクライアント領域のサイズを返します。これは、次のコードと同じです。

point2 <rollout>.width <rollout>.height

   

removeRollout <rollout>

[ユーティリティ](Utilities)パネルからロールアウトを削除します。

メソッド addRollout() および removeRollout() の詳細については、「スクリプトで書かれたユーティリティでの複数のロールアウトの管理」を参照してください。

   

イベント ハンドラ

ロールアウト内の特定のユーザ インタフェース項目に対して指定するイベント ハンドラのほかに、ユーザがロールアウト全体を最初に開いたとき( open )、および明示的に閉じたとき( close )に呼び出されるハンドラの機能を定義できます。このハンドラは、初期化コードやロールアウトが閉じたときのクリーンアップに便利で、1 つのスクリプトで書かれたユーティリティで複数のロールアウトを管理する場合に必要です。ロールアウト フロータ ウィンドウのサイズが変更されたり移動されたりすると、それに伴ってロールアウト フロータ ウィンドウの最初のロールアウト上でイベント ハンドラ(それぞれ resized moved)が呼び出されます。追加のイベント ハンドラ( oktoclose )は、ロールアウトを閉じてもよいかどうかを確認するために呼び出されます。

この構文を次に示します。

on <rollout_or_utility> open do <expr>

ロールアウトまたはユーティリティが開いたときに呼び出されます。

   

on <rollout_or_utility> close do <expr>

ロールアウトまたはユーティリティが閉じたときに呼び出されます。

   

on <rollout_or_utility> oktoclose do <expr>

ロールアウトの[閉じる](Close)ボタンをユーザがクリックしたときに呼び出されます。これにより、スクリプト作成者が閉じる操作を継続するかどうかを決定できます。式が true 値に評価される場合は、ロールアウトを閉じることができます。式が false 値に評価される場合は、閉じる操作が無視され、ロールアウトやユーティリティは開いたままになります。

次の例では、[OK To Close]チェック ボタンにチェックマークが付くまでユーティリティは閉じません。

utility ui_oktoclose "OKToClose Test"
(
checkbutton a2 "OK To Close"
on ui_oktoclose oktoclose do a2.state
)
on <rollout_or_utility> help do <expr>

ダイアログ、ロールアウト フロータ、ロールアウトにフォーカスがあり、[F1]が押された場合に呼び出されます。

ロールアウトまたはロールアウト内のロールアウト コントロールにフォーカスがある場合、コードはそのロールアウトに対して「ヘルプ」イベント ハンドラが定義されているかどうかを確認します。

そうでなく、ロールアウトがロールアウト フロータ内にある場合、フロータはメッセージを受け取り、フロータ内の最初のロールアウトに「ヘルプ」イベント ハンドラがあるかどうかを確認し、存在する場合はそれを呼び出します。

ロールアウトがサブロールアウト内にある場合、MAXScript は明示的に同じチェックを実行し、サブロールアウト内の最初のロールアウトに対してハンドラを呼び出します。

「ヘルプ」イベント ハンドラが見つからない場合、メッセージは最終的に 3ds Max ウィンドウに渡され、3ds Max ヘルプが呼び出されます。

   

on <rollout_or_utility> rolledUp <arg> do <expr>

ロールアウトまたはユーティリティがロール アップまたはロール ダウンされたときに呼び出されます。引数には、ロールアウトがロール ダウンされた(開かれた)場合には true 、ロールアウトがロール アップされた(閉じられた)場合には false が含まれます。

rollout test "Test"
(
button btn_test "Press Me"
on test rolledUp state do
if state then print "Rolled Down!" else print "Rolled Up!"
)
nf = newRolloutFloater "Test" 200 200
addRollout test nf

   

on <rollout> resized <arg> do <expr>

ユーザ操作、またはロールアウト フロータ ウィンドウの size プロパティを変更するスクリプトによってロールアウト フロータ ウィンドウがサイズ変更されるとき、最初のロールアウト上で呼び出されます。 resized イベント ハンドラ式のロールアウト フロータ ウィンドウをサイズ変更することによって resized イベント ハンドラが再び呼び出されることはありません。< arg > の値は、ロールアウト フロータ ウィンドウの現在の幅と高さです。

global my_rof_size
...
on my_rollout resized size do
(
my_rof_size = size -- save the new window size
)

   

on <rollout> moved <arg> do <expr>

ユーザ操作、またはロールアウト フロータ ウィンドウの pos プロパティを変更するスクリプトによってロールアウト フロータ ウィンドウが移動されるとき、最初のロールアウト上で呼び出されます。< arg > の値は、ピクセル単位での画面上のロールアウト フロータ ウィンドウの現在位置です。

以下の例では、動作を記録するログ ファイルを保持し、ロールアウトのオープンおよびクローズ ハンドラを使用して、ログ ファイルを開閉します。

utility frab "Optimal Frabulator"
(
local log
spinner frab_x ...
button do_it "Enfrabulate now"
...
on do_it pressed do
(
frabulate selection
format "selection frabbed at %\n" localTime to:log
)
on frab open do log = createFile "frabulator.log"
on frab close do close log
)

次の例では、ロールアウト フロータ ウィンドウがサイズ変更されるときに on resized イベント ハンドラが呼び出されます。イベントは、ロールアウト フロータ ウィンドウの最初のロールアウトだけで生成されるため、 on b resized イベント ハンドラは全く呼び出されません。

rollout a "Rollout A"
(
button a1 "a1"
on a resized val do (format "A: %\n" val)
)
--
rollout b "Rollout B"
(
button b1 "b1"
on b resized val do (format "B: %\n" val)
)
--
rof=newrolloutfloater "test" 200 200
addrollout a rof
addrollout b rof
rof.size=[300,300]

関連事項