首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Libgdx在多个图像上使用单击侦听器(循环)

Libgdx在多个图像上使用单击侦听器(循环)
EN

Stack Overflow用户
提问于 2018-08-26 03:48:20
回答 1查看 236关注 0票数 2

我想知道是否有一种方法可以使用组合在一起的单击监听器来设置多个图像。我有这个图像数组,我试图使用增强的for each循环,但它不起作用。我尝试在一个数组中的所有图像上设置一个单击侦听器,而不是使用单击侦听器单独设置该数组的每个成员。

编辑

代码语言:javascript
代码运行次数:0
运行
复制
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();
}}

我是否必须使用增强的for each循环,或者是否可以使用不同的循环?目的是让用户点击/触摸其中一个图像,它将转到屏幕的一个位置,对于每个点击/触摸的图像,它将转到屏幕上的一个位置。

EN

回答 1

Stack Overflow用户

发布于 2018-08-26 19:12:14

如果这是一种类似于拼图的东西,你可以使用一个计数器来递增每个图像的大小,并将其作为位置。这没有什么意义,所以在这里:

代码语言:javascript
代码运行次数:0
运行
复制
// 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));
            }
        });
    }
}

仅当图像大小完全相同时,才能使用

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52020728

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档