选择单选按钮时的MEL功能调用

时间:2016-03-24 12:50:41

标签: function radio-button maya mel

我通过清除点上的关键帧解决了这个问题,当网站让我时,我会发布我的解决方案。谢谢你的想法!

MEL的新手!

我写了这个函数,如果选中了单选按钮1,它会旋转球1然后给它动画(调用oneballanim函数)。

另一方面,如果选择单选按钮2,它会旋转两个球,然后调用动画两个动画的功能。

 global proc rotaterandanim() {
     if (`radioButtonGrp -q -select myRadBtnGrp` == 1) setAttr ball1.rotateZ 15;
     if (`radioButtonGrp -q -select myRadBtnGrp` == 1) oneballanim();

     //second radio button
     if (`radioButtonGrp -q -select myRadBtnGrp` == 2) setAttr ball1.rotateZ 15;
     if (`radioButtonGrp -q -select myRadBtnGrp` == 2) setAttr ball2.rotateZ 15;
     if (`radioButtonGrp -q -select myRadBtnGrp` == 2) twoballanim();         
 }

问题在于,当我运行脚本时,它实际上会动画并移动两个球,即使选择了单选按钮1!我该怎么做才能解决这个问题?

1 个答案:

答案 0 :(得分:0)

如果没有看到剩下的代码,你可能还有其他一些不容易看到的东西。只是一个建议,你应该合并你的IF / ELSE声明(见下文)。我尝试了下面的内容,它似乎可以在不同时执行这两个选项的情况下捕获每个选择(这就是为什么我说这里还有其他东西在没有更多代码的情况下我们看不到)。尝试以下操作...并在每次选择按钮1或2后继续执行rotaterandanim(),它会正确打印出来并且只旋转应旋转的内容。

//    Create a window with two separate radio button groups.
//
string $window = `window`;
columnLayout;
radioButtonGrp  -numberOfRadioButtons 2
    -label "Two Buttons" -labelArray2 1 2
    -select 1
    myRadBtnGrp;
showWindow $window;

global proc rotaterandanim() {
    if (`radioButtonGrp -q -select myRadBtnGrp` == 1) {
        setAttr ball1.rotateZ 15;
        oneballanim();
    }
    //second radio button
    else if (`radioButtonGrp -q -select myRadBtnGrp` == 2) {
        setAttr ball1.rotateZ 15;
        setAttr ball2.rotateZ 15;
        twoballanim();  
    }       
}

global proc oneballanim() {
    print("OneBallAnim");
}

global proc twoballanim() {
    print("TwoBallAnim");
}