实现目标
用Maxscript创建多层结构的Rollout(卷展栏窗口),可以不断的点击切换到不同的面板功能。
思路
大致思路是,先创建一个start卷展栏,按钮后创建第二个卷展栏,再按check后,改变卷展栏高度。按button后会打开一个新的脚本窗口。
1.首先,我们先要了解下如何用Maxscript创建一个卷展栏,其实很简单,两个关键词:Rollout和CreateDialog。如下代码可以了解到,引号内的为显示名称,真正的名称是Test,所以指令的操作需要针对真正的名称进行。同时创建时可以定义卷展栏的宽度高度。
了解了如何创建,我们也需要了解下如何销毁它,关键词:DestroyDialog <Rollout>
同时为了销毁时避免错误导致销毁时报错就不是我们希望看到的,所以通过
try <protected_expr> catch <on_err_expr> 的错误捕获机制进行处理,catch()表示不作任何处理。
try(destroydialog Test) catch() rollout Test "TestWindow" width:200 height:300 ( ) createdialog Test
2.了解了卷展栏的基本创建操作,后续的实现都是基于第一个卷展栏内设置的操作控件进行。
button 按钮名称 "标题" 位置 宽 高 尺寸
on 按钮名称 pressed do
(
)
button控件用于在rollout上放置一个按钮,用户可以单击该按钮,通常用于执行某些任务。
我们可以在按下按钮后再创建一个卷展栏。
3.在上一个操作中的创建的卷展栏内,我们可以继续设置按钮操作,但这次可以尝试包含文件的操作来调取一个脚本文件,方法如下:
include "filename_string"
测试完整代码
try(destroydialog test) catch() try(destroydialog start) catch() createRoll = newRolloutFloater "Modify Tool v0.1" 300 400 closeRolloutFloater createRoll try closeRolloutFloater test catch() --创建第一个卷展栏start,包含一个start tool按钮 rollout start "测试多层结构" width:356 height:237 (
button toolStart "S t a r t T o o l" pos:[55,180] width:250 height:40 size:40
on toolStart pressed do
(
--点击按钮摧毁第一个卷展栏,并创建第二个卷展栏test,包含一个check按钮
destroyDialog start
rollout test "Game Data Auto Check Tool V0.1" width:302 height:179
(
button btn159 "Button" pos:[47,101] width:203 height:48
button autoCheck "check" pos:[45,13] width:205 height:46
--按下button按钮,打开include的脚本
on btn159 pressed do
(
include "E:\TA\Maxscript\GameDateCheckTool\modify_tool_0.1.ms"
)
on autoCheck pressed do --按下check按钮,卷展栏高度改为500
(
test.height = 500
)
)
Createdialog test width:300 height:70 --注意位置,这里定义test卷展栏
) )
Createdialog start width:360 height:240