Libgdx Использование прослушивателя щелчка на нескольких изображениях (зацикливание) - PullRequest
0 голосов
/ 25 августа 2018

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

РЕДАКТИРОВАТЬ

public  void Player1() {
    deck.displayHand();

    stage = new Stage(new ScreenViewport());

    group.addActor(deck.hand.get(0));
    deck.hand.get(0).setPosition(200,0);
    deck.hand.get(0).setTouchable(Touchable.enabled);

    group.addActor(deck.hand.get(1));
    deck.hand.get(1).setPosition(220,0);
    deck.hand.get(1).setTouchable(Touchable.enabled);

    group.addActor(deck.hand.get(2));
    deck.hand.get(2).setPosition(240,0);
    deck.hand.get(2).setTouchable(Touchable.enabled);

 stage.addActor(group);

    rand = (int) (Math.random() * (deck.hand.size));

    for (int z = 0; z<deck.hand.size; z++){
        final int finalZ = z;
        deck.hand.get(z).addListener(new ClickListener(){
            @Override
            public void clicked(InputEvent event, float x, float y) {
                deck.hand.get(finalZ).addAction(Actions.moveTo(300,400));
            }
        });
    }


}

@Override
public void draw(Batch batch, float parentAlpha) {
    Gdx.input.setInputProcessor(stage);
    stage.act();
    stage.draw();
}}

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

1 Ответ

0 голосов
/ 26 августа 2018

Если это похоже на головоломку, вы можете использовать счетчик, увеличивающий размер каждого изображения, и указать его в качестве позиции. Это имеет очень мало смысла, поэтому здесь:

// Fill array with each image in it's grid position e.g. the bottom left image would go at (0, 0) in the array.
Image[][] array = new Image[cols][rows];

// All the images have to be the same size but not necessarily square.
imageWidth = 100;
imageHeight = 100;

for(int y = 0; y < array.length; y++) {
    for(int x = 0; x < array[0].length; x++) {
        Image img = array[y][x];
        img.addListener(new ClickListener(){
            @Override
            public void clicked(InputEvent event, float x, float y) {
                img.addAction(Actions.moveTo(x * imageWidth + initialXOffset, y * imageHeight + initialYOffset));
            }
        });
    }
}

Это работает, только если изображения имеют одинаковый размер.

...