2016-03-24 33 views
0

Noktalarda anahtar kareleri temizleyerek çözdüm, site'a izin verdiğinde çözümümümü göndereceğim. Düşüncelerin için teşekkürler!Radyo düğmesi seçildiğinde MEL işlev çağrısı

MEL'den oldukça yeni!

Bu işlevi, radyo düğmesi 1 seçiliyse, top 1'i döndürdüğünü ve sonra da animasyonu (oneballanim işlevine çağrı) yazdı.

Diğer taraftan, radyo düğmesi 2 seçilirse, iki top döner ve ardından her ikisini de canlandıran işlevi çağırır.

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();   
} 

sorun Senaryoyu çalıştırdığınızda, aslında radyo düğmesi 1 seçilse bile, animasyon ve topları İKİ hareket olmasıdır !! Bunu düzeltmek için ne yapabilirim?

+0

Bu kod bana uygun görünüyor, sorunuzu düzenleyebilir ve bu işlevleri ekleyebilirsiniz oneballanim() 've' twoballanim() '? – DrHaze

+0

@DrHaze Evet, şu anda yapıyor! – user3295674

cevap

0

Burada, kodun geri kalanını görmeden görmeniz kolay olmayan başka bir şeyiniz olabilir. Sadece bir öneri, IF/ELSE ifadelerinizi sağlamlaştırmalısınız (aşağıya bakınız). Aşağıdakileri denedim ve her seçimi aynı anda yapmadan yakalamaya çalışıyor gibiydi (bu yüzden daha fazla kod olmadan göremediğimiz başka bir şey olduğunu söyledim). Aşağıdakileri deneyin ... ve her seferinde 1 veya 2 düğmesini seçtikten sonra rotaterandanim() işlevini sürdürmeye devam edin, düzgün şekilde yazdırır ve yalnızca ne döndürmesi gerektiğini döndürür.

// 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

Haklısın, çünkü bence oneballanim ve ikiballanim'de anahtar kareleri ayarladım, belki de her bitimden sonra anahtar kareleri temizlemem gerekiyor. Tuşlara basılırsa (oneballanim) – user3295674

+0

Yep işlevlerinden birini gösterecek şekilde düzenleyeceğim, ne ayarlamış olursanız olun her zaman sadece anahtarlanmış değere geri dönecektir. Umarım bu yardımcı olur, iyi şanslar! – Zak44

+0

Bu yüzden, her yeni ayarlanmadan önce tüm anahtar kareleri temizlemeli miyim? – user3295674