2017-02-16 8 views
1

Ich kenne den Unterschied zwischen setX/Y und setOrigin und ich bin mir ziemlich sicher, dass ich setOrigin() richtig verwende. Ich möchte, dass diese Schaltfläche vergrößert wird, während sie berührt wird. Gerade jetzt scaleBy() scheint von links unten zu skalieren, vergrößert es etwas und bewegt es nach oben und nach rechts. Das Zurücksetzen des Ursprungs oder das manuelle Verschieben durch eine andere Aktion hat keine offensichtlichen Auswirkungen. Siehe Screenshots unten für mehr Klarheit.LibGdx setOrigin() funktioniert nicht

final Group but = new Group(); 
//... 
//this seems to have no effect 
but.setOrigin(but.getWidth()/2, but.getHeight()/2); //center origin for scaling 
but.addListener(new InputListener() { 
    @Override 
    public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) { 
     //this happens 
     but.addAction(Actions.scaleBy(.2f, .2f)); 
     //this doesn't 
     but.addAction(Actions.moveBy(but.getWidth(), but.getHeight())); 
     return true; 
    } 
    //... 
}); 
stage.addActor(but); 

Bevor touch:

enter image description here

Nach touch:

enter image description here

Antwort

1

benötigen Größe Ihrer Gruppe zu setzen.

Dieser Code funktioniert nicht, weil Sie die Größe Ihres Gruppenobjekts nicht festlegen. but.getWidth() und but.getHeight() geben Sie 0 zurück, so dass but Gruppe in der gleichen Position bleiben, nachdem Sie die Aktion anwenden.

+0

Danke! Scheinbar die Größe der Darsteller zu setzen und sie der Gruppe hinzuzufügen hat keinen Einfluss auf die Grenzen der Gruppe (ich dachte, dass eine Gruppe automatisch Grenzen haben würde, die der Summe ihrer Kinder entsprechen) – sam

Verwandte Themen