Центрирование актера по горизонтали и вертикали приводит к неправильным границам - PullRequest
0 голосов
/ 30 мая 2018

У меня есть кнопка в центре моей сцены, и я хочу масштабировать ее из центра, как только пользователь начнет нажимать на нее, а затем сбросить масштаб, как только он отпустит палец.

Это код, который я использую:

private int size;
private Texture texture;
private Action scaleAction, scaleDownAction;

public PlayButtonActor(int x, int y, int size) {
    this.size = size;
    setBounds(x, y, size, size);
    this.texture = new Texture("data/play_button.png");
    this.setTouchable(Touchable.enabled);
    setOrigin(size / 2, size / 2);

    final float finalSize = size;
    addListener(new InputListener() {
        @Override
        public void touchUp(InputEvent event, float x, float y, int pointer, int button) {
            event.handle();
            removeAction(scaleAction);
            scaleDownAction = Actions.parallel(
                    Actions.scaleTo(1f, 1f, 0.1f)
            );
            addAction(scaleDownAction);
        }

        @Override
        public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) {
            removeAction(scaleDownAction);
            scaleAction = Actions.parallel(
                    Actions.scaleTo(1.4f, 1.4f, 0.2f)
            );
            addAction(scaleAction);
            return true;
        }
    });
}

@Override
public void draw(Batch batch, float parentAlpha) {
    final float realSize = this.getScaleX() * size;
    batch.draw(this.texture, this.getX() - realSize / 2, this.getY() - realSize / 2, realSize, realSize);
}

Это работает при успешном масштабировании кнопки, однако кликабелен только верхний правый сектор кнопки. Here is a graphic showing it.

Как я могу сделать так, чтобы кнопка масштабировалась из / в центр, в то время как границы ее все еще правильные?

Заранее спасибо!

1 Ответ

0 голосов
/ 31 мая 2018

Не устанавливайте текстуру, но добавляйте текстуру как изображение:

add (новое изображение (текстура));затем масштабируйте изображение.Активируемая область всегда будет иметь полный размер кнопки, независимо от масштабирования изображения.

...