2016-04-03 18 views
0

libGDX'daki Tablo içinde Label içinde farklı işlemler yapmak istiyorum. Benim Table sınıftaTamamlandığında aynı animasyonu farklı değerlerle çağırıyor

Ben Label ve scale\move\rotate o, bu eylemlere eylemler her zaman ulaşmaya çalışıyorum bir yüzden farklı dize yayınlanacağı her zaman sona oluşturmak, ama çünkü çağıran bir kilitlenme var her zaman kendi kendime (bence).

a= new Label("", mLabelStyleAmount); 
addActor(a); // in a Table class 

    action = Actions.run(new Runnable() { 

      @Override 
      public void run() { 
       lunchText(i); 
      } 
     }); 

private void lunchText (int i) { 
    a.setText(strings[i]); 
    ScaleToAction up = Actions.scaleBy(30, 20, 5) 
    a.setPosition(a.getWidth() * 0.2f, 50); 
    a.addAction(Actions.sequence(up, action)); 
    i++; 

} 

Bitirdiğim her seferinde aynı yöntemi çağırmanın doğru yolu bu mu?

cevap

0
Eğer action tarafından ateşlenen ediliyor yöntemde action ekleyerek neden olup o sonsuz nüks neden olan var istisna :) Her zaman sizin harekete action eklemek demektir

yeniden action eklemek ve benzeri ve benzeri ...

İkinci şey addAction yöntemini kullanarak birçok eylemi eklerken bu eylemler paralel değil sıralı olmasıdır!

Çözünürlük, libGDX SequenceAction kullanmak ve en baştan tüm action oluşturmaktır. Bu gibi olmalıdır:

SequenceAction sequence = Actions.sequence(); 

    for(int i = 0; i < string.length; i++) { 
     sequence.addAction(Actions.run(new Runnable() { 
              @Override 
              public void run() { 
               a.setText(strings[i]); 
               a.setPosition(a.getWidth() * 0.2f, 50);                
              } 
             }, Actions.scaleBy(30, 20, 5))); 

başka yolu da yeni eylemi a (son eylemler bittikten bunun ne anlama) Herhangi eylemleri yoksa render() yönteminde kontrol etmek ve daha sonra eklemektir

//render() 
    if(a.getActions.size == 0) 
     addActionToA(); 
İlgili konular