RCMenu において修正された .Checked プロパティと .Enabled プロパティ
3ds Max 8 以降で使用可能です。ダイアログ ボックスで使用する RCMenu のメニュー項目は、menuItem の .enabled プロパティと .checked プロパティが変更されたときに、正しく更新されるようになりました。
テスト ケース:
|
try (destroyDialog ro_vPropShop3) catch ()
rcmenu rc_Main
(
local testval = false
subMenu "Options"
(
subMenu "Placement Options"
(
menuItem mi_align "Align to face"checked:testval
menuItem mi_art "Make Art"
menuItem mi_pict "Make Picture"checked:false
)
)
menuItem mi_halt "Halt and Catch Fire"
on mi_align picked do (print "picked";testval = not testval)
on rc_Main open do (print "opened")
on rc_Main update do (print "update")
)
rollout ro_vPropShop3 "vPropShop3" ( )
createDialog ro_vPropShop3 width:600 height:400 \
bgColor:[153,153,153] menu:rc_Main \
style:#(#style_titlebar, #style_sysmenu, #style_minimizebox, #style_resizing)
|
[オプション](Options)/[Placement Options]/[Align to Face]を選択してからその項目を再び開くと、その項目にはチェックマークが付きます。これまでは、チェックマークなしで表示されていました。その他の項目を選択しても、これは実行されません。スクリプトで状態をトラックするように変数を設定する必要があります
(menuItem mi_align の testval)。
注:
ダイアログ ボックスで RCMenu を使用すると、ダイアログ ボックスが作成されるときに open ハンドラが 1 回呼び出されます。
RCMenu に追加された「update」イベント ハンドラ
いずれかの最上位 subMenu または menuItem を初めてクリックすると、このイベント ハンドラが呼び出されます。メニュー項目にフォーカスが設定されるたびに
1 回だけ、このイベント ハンドラは呼び出されます。[オプション](Options)をクリックするとこのイベント ハンドラが呼び出されますが、[オプション](Options)と[Halt
and Catch Fire]の間でマウスを前後に動かしたり、メニュー項目をクリックしたりすると、このイベント ハンドラは呼び出されません。このイベント ハンドラは、enabled
キーワード パラメータと checked キーワード パラメータが評価されたあとで呼び出され、このプロパティに新しい値を設定できます。checked プロパティか
enabled プロパティにキーワード パラメータを指定していない場合、キーワード パラメータの処理時にそのプロパティ値は変更されません (たとえば最初の作成後は、このプロパティには既定値がありません)。
テスト ケース:
|
rc_Main.mi_align.enabled = not rc_Main.mi_align.enabled
rc_Main.mi_art.checked = not rc_Main.mi_art.checked
rc_Main.mi_art.enabled = not rc_Main.mi_art.enabled
rc_Main.mi_pict.checked = not rc_Main.mi_pict.checked
rc_Main.mi_pict.enabled = not rc_Main.mi_pict.enabled
rc_Main.mi_halt.checked = not rc_Main.mi_halt.checked
rc_Main.mi_halt.enabled = not rc_Main.mi_halt.enabled
|
上記の実行後、すべての menuItem は無効になり、[Align to Face]と[Make Art]にチェックマークが付いて[Make Picture]にはチェックマークが付きません。[Make
Picture]には、キーワード パラメータ checked:false があるためにチェックマークが付きません。
RCMenu を開くと、ローカル変数が再初期化されることに注意してください。
使用できません。
|
rcmenu MyRCmenu4
(
local isChecked = false
menuItem mi_xx "test slot"checked:isChecked
on mi_xx picked do isChecked = not isChecked
on MyRCmenu4 open do (print "opened")
)
popupmenu MyRCmenu4
popupmenu MyRCmenu4
|
MyRCmenu4 が表示されるたびに isChecked が false に設定されます。 RCMenu の範囲外に持続状態を保存する必要があります。
|
例:
|
isChecked = false
rcmenu MyRCmenu4
(
menuItem mi_xx "test slot" checked:isChecked
on mi_xx picked do isChecked = not isChecked
)
popupmenu MyRCmenu4
|