2017-02-16 5 views
1

Я знаю разницу между setX/Y и setOrigin, и я уверен, что на самом деле правильно использую setOrigin(). Я хочу, чтобы эта кнопка увеличивалась при касании. Прямо сейчас scaleBy(), похоже, масштабируется слева внизу, слегка увеличивая его и перемещая вверх и вправо. Сброс источника или попытка его перемещения вручную с помощью другого действия не имеют видимого эффекта. См. Скриншоты ниже для большей ясности.LibGdx setOrigin() не работает

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

Перед прикосновением:

enter image description here

После прикосновения:

enter image description here

ответ

1

нужно установить размер вашей группы.

but.addAction(Actions.moveBy(but.getWidth(), but.getHeight())); 

Этот код не работает, так как вы не устанавливаете размер своего, но группового объекта. but.getWidth() и but.getHeight() return zero so but Группа остается в том же положении после применения действия.

+0

Спасибо! Очевидно, что установка размера участников и добавление их в группу не влияет на границы группы (я полагал, что группа автоматически будет иметь границы, равные сумме своих детей) – sam