Maxscript:如何访问稍后在卷展栏中的其他组内定义的UI控件(脚本插件)

时间:2012-02-23 15:38:49

标签: 3dsmax maxscript

我有一个simpleObject脚本插件,我在其中定义了一个参数块及其相关的卷展栏:

rollout mainParamsRollout "Main Properties"
(
    group "Group1"
    (
        dropdownlist ddl1 "ddl1" items:#("A", "B") height:4
        on ddl1  selected i do
        (
            ddl2.enabled = false    
        )
    )

    group "Group2"
    (
        dropdownlist ddl2 "ddl2" items:#("C", "D") height:4
    )   
)

当我尝试在ddl1上发生某个选择后禁用ddl2时,maxscript会抛出一个异常,说明ddl2未定义。

我知道可以通过mainParamsRollout.controls [5]访问ddl2,但我想知道是否有更好的方法。我已经尝试在脚本插件的顶部定义一个局部变量:

local ddl2

让它可以在任何地方使用,但这似乎也不起作用。有任何想法吗? 感谢

2 个答案:

答案 0 :(得分:1)

ddl2的事件处理程序中调用它之前,

ddl1必须声明。您可以这样订购代码:

rollout mainParamsRollout "Main Properties"
(
    group "Group1"
    (
        dropdownlist ddl1 "ddl1" items:#("A", "B") height:4 
    )

    group "Group2"
    (
        dropdownlist ddl2 "ddl2" items:#("C", "D") height:4
    )   

    on ddl1 selected i do
    (
        ddl2.enabled = false    
    )
)

答案 1 :(得分:0)

或者只是在控件之前添加卷展栏,如

mainParamsRollout.ddl.enabled = false

然后在哪里调用控件并不重要。

-Johan