progressBar コントロール は、ロールアウトに進行状況バーを配置するために使用します。
構文は次のようになります。
progressBar <name> [value:<number>] [color:<color>] [orient:<name>]
progressBar
項目の既定の位置合わせは、
#left
です。
パラメータ
進行状況のパーセント値(0 - 100)の初期値です。既定値は 0 ですこの値は整数で指定します。
進行状況バーのカラーです。既定のカラー値は[30,10,190]です。
進行状況バーを左から右へ表示するか(
orient:#horizontal
)、下から上へ表示するか(
orient:#vertical
)を返します。既定値は
#horizontal
です。
プロパティ
<progressbar>.value Integer
進行状況バーの完了したパーセント値 (0 - 100) です。
<progressbar>.color Color
進行状況バーのカラーです。
<progressbar>.orient Name
進行状況バーの塗りつぶしの方向:
#horizontal
- 左から右。
#vertical
- 下から上。
例:
|
-- ロールアウトを定義
rollout progressTest "Progress Test"
(
button doit "Process Scene" -- ボタンが押されたときに
progressbar doit_prog color:red -- 赤い進行状況バーの処理を
on doit pressed do -- 開始するボタン....
(
objArray = geometry as array -- すべてのジオメトリ オブジェクトを配列内に取得し
for i = 1 to objArray.count do -- 以下の処理を繰り返します。
(
-- 進行状況バーのパーセントを更新します。
-- たとえば、20 個のジオメトリ オブジェクトがあり
-- 現時点で i が 1 の場合は 100.0*1/20 = 5% になり、
-- i が 2 のときは 100.0*2/20 = 10% のようになります...
doit_prog.value = 100.*i/objArray.count
-- オブジェクトを使って何らかの動作(名前の出力など)を実行します。
print objArray[i].name
)-- i ループを終了します。
doit_prog.value = 0 -- 以上の処理が完了したら、進行状況バーを 0% にリセットします。
)
)
createDialog progressTest 200 60 -- ダイアログ ボックスを作成し、テストします。
|
注:
.value
プロパティには、0 ~ 100 の範囲の整数を指定する必要があります。現在の整数値と整数値の合計からパーセントを計算するときは、値の乗算と除算の順番が重要になります。
これらの値を最初に割ってから 100.0 を掛けると、常に 0.0 が返されます。整数を整数で割った結果も整数でなければなりませんが、ゼロより小さいため、四捨五入されて計算結果はゼロになります。
1/20*100.0 -> 0*100.0 -> 0.02/20*100.0 -> 0*100.0 -> 0.03/20*100.0 -> 0*100.0 -> 0.0
ただし
100.0*1/20 -> 100.0/20 -> 5.0100.0*2/20 -> 200.0/20 -> 10.0100.0*3/20 -> 300.0/20 -> 15.0
浮動小数点値 100.0 を使用すると、結果は暗黙的に浮動小数点に変換されます。浮動小数点値と整数を掛けた場合は浮動小数点値が返され、浮動小数点値を整数で割った場合も浮動小数値が返されるためです。浮動小数点値は、
.value
プロパティに割り当てると、内部的に整数に変換されます。
イベント
on <progressbar> clicked <arg> do <expr>
ユーザが進行状況バーをクリックすると呼び出されます。
<arg>
引数には、クリックされた位置のパーセント値が含まれます。
このイベント ハンドラにより、進行状況バーがインタラクティブな UI コントロールになります。スライダの代わりとしての進行状況バーの使用例については、チュートリアル - フローティング コントロールを使ったモーファー モディファイヤの拡張を参照してください。
on <progressbar> rightClick do <expr>
ユーザが 進行状況バー コントロールを右クリックしたときに呼び出されます。
3ds Max 2010 以降で使用可能です。