2017-08-19 4 views
1

ich einen Brief Klasse wie dieses:Libgdx derzeit keine Aktion auszuführen

class Letter : Label { 
    val char: Char 
    var interactable = true 
    constructor(char: Char) : super(""+char, H.letterStyle()) { 
     this.char = char 
    } 

    fun animateSelect() { 
     addAction(Actions.scaleTo(3.0f, 3.0f, 0.5f)) 
    } 
    fun animateUnselect() { 
     addAction(Actions.scaleTo(3.0f, 3.0f, 0.5f)) 
    } 
} 

In meiner Berührung Zuhörer, ich habe dies:

override fun touchDown(event: InputEvent?, x: Float, y: Float, pointer: Int, button: Int): Boolean { 

     var currentInteractingLetter: Letter? = null 
     for (letter in letterList) { 
      if (letter.bound.contains(x, y)) { 
       currentInteractingLetter = letter 
       break 
      } 
     } 

     if (currentInteractingLetter == null) { 

     } else { 
      selectedLetters.add(currentInteractingLetter) 
      currentInteractingLetter.animateSelect() 
      currentInteractingLetter.interactable = false 
     } 

     return true 
    } 

Die Logik ist ganz einfach. Wenn Benutzer einen der letter s berühren, rufe ich animateSelect() Funktion auf. Wenn ich es starte, animateSelect wurde aufgerufen, aber es gibt keine scaleUp Wirkung. Ich habe versucht, alle Aktionen vor addAction zu löschen, aber immer noch das Gleiche.

Antwort

1

Etiketten unterstützen die Skalierung nicht direkt.

Der einfache Weg, dies zu lösen, ist das Etikett in einem Container, setTransform(true) auf dem Container gelegt und Ihre angelegte Aktion zum Container hinzuzufügen.

val container= Container<Label>().apply { 
    isTransform=true 
    actor=label   // Set your Label to container 
} 

container.addAction(Actions.scaleTo(3.0f, 3.0f, 0.5f)) 
Verwandte Themen