Взаимодействие с изображениями в Libgdx Touch

Есть ли способ переместить изображение в другое положение, когда пользователь нажимает на это изображение.

public Players() {
    deck.displayHand();

    stage = new Stage(new ScreenViewport());

    Image card1 = new Image(sprite);

card1.addListener(new InputListener(){
        @Override
        public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) {

            return true;
        }

        @Override
        public void touchUp(InputEvent event, float x, float y, int pointer, int button) {

        }
    });

}

@Override
public void draw(Batch batch, float parentAlpha) {

    stage.act();
    stage.draw();

}

Я знаю, что мне нужно добавить слушателя, но я не понимаю, что делать после. Цель состоит в том, чтобы пользователь коснулся изображения карты, и оно переместилось бы в другое место.

Должно ли изображение перемещаться каждый раз одинаково или что оно должно делать?

jle 21.08.2018 23:35

Как только пользователь касается изображения, оно перемещается только один раз в определенное место.

BittahDreamer 21.08.2018 23:38
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
2
71
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Image - это Actor, поэтому вы можете добавить к нему Действия.

card1.addListener(new ClickListener() {
    @Override
    public void clicked(InputEvent event, float x, float y) {
        card1.addAction(Actions.moveTo(100, 100, .5f, Interpolation.circleIn));
    }
});
Ответ принят как подходящий
  1. Переместитесь в предопределенную позицию, когда вы / пользователь нажимаете на это изображение:

    Добавьте действие к этому изображению (дочерний элемент Actor), Предположим, что предварительно определенная позиция - x_pos, y_pos, а время движения - t в секундах.

    card1.addListener(new ClickListener() {
         @Override
         public void clicked(InputEvent event, float x, float y) {
              card1.addAction(Actions.moveTo(x_pos, y_pos,t));
        }
    });
    
  2. Цель состоит в том, чтобы коснуться карты / изображения, и оно переместится в другое место в зависимости от прикосновения пользователя:

    card1.addListener(new DragListener(){
        @Override
        public void drag(InputEvent event, float x, float y, int pointer) {
            card1.moveBy(x - card1.getWidth() / 2, y - card1.getHeight() / 2);
            super.drag(event, x, y, pointer);
        }
    });
    

Вам нужно настроить сцену как InputProcessor

Gdx.input.setInputProcessor(stage);

У меня есть несколько карточек, и когда я устанавливаю прослушиватель кликов для каждой из этих карточек, возникает проблема, когда, когда я нажимаю / касаюсь одной из карточек (например, card1), затем касаюсь / щелкаю другую карточку (например, card2), вторую карточку (card2) ) отправляется на оборотную сторону первой выбранной карты (card1). Есть ли способ укладывать карты друг на друга (например, когда пользователь сначала щелкает / касается карты, а затем касается / щелкает вторую карту, эта вторая карта отображается, а не отправляется на оборотную сторону предыдущей карты, где пользователь не видит карту). В общем, карты можно складывать друг на друга.

BittahDreamer 24.08.2018 15:55

Другие вопросы по теме