2016-03-24 2 views
0

Я решил это, очистив ключевые кадры в точках, я отправлю свое решение, когда сайт позволит мне. Спасибо за ваши мысли!Функция вызова функции 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 !! Что я могу сделать, чтобы исправить это?

+0

Этот код кажется мне хорошим, можете ли вы изменить свой вопрос и добавить эти функции 'oneballanim()' и 'twoballanim()'? – DrHaze

+0

@DrHaze Да, делай прямо сейчас! – user3295674

ответ

0

У вас, вероятно, есть что-то еще, что не так просто увидеть, не видя остальную часть кода. Просто предложение, вы должны консолидировать свои IF/ELSE заявления (см. Ниже). Я попробовал следующее, и он, похоже, поймал каждый выбор, не обойдя оба одновременно (вот почему я сказал, что здесь происходит что-то еще, что мы не можем видеть без дополнительного кода). Попробуйте следующее ... и продолжайте выполнение rotaterandanim() после выбора кнопки 1 или 2 каждый раз, она печатается правильно и только вращается, что должно вращаться.

// 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"); 
} 
+0

Вы правы, я думаю, это потому, что в oneballanim и twoballanim я устанавливал ключевые кадры, возможно, мне нужно очистить ключевые кадры после каждого бит. Я отредактирую, чтобы показать одну из функций (oneballanim) – user3295674

+0

Да, если это ключ, независимо от того, что вы установили для него, он всегда будет возвращаться к ключевому значению. Надеюсь, что это поможет, удачи! – Zak44

+0

, так должен ли я делать все четкие ключевые кадры перед каждым новым временем? – user3295674

 Смежные вопросы

  • Нет связанных вопросов^_^