libgdx如何在图像上添加clicklistener

时间:2015-09-09 10:47:50

标签: java image libgdx listener

我刚开始使用libGDX进行原型设计,以了解它是如何工作的。 我想实现一个网格(如国际象棋游戏),当我点击/触摸一个网格框时,这会改变它的图像。

我找到了一个很好的教程,但它只使用了键盘监听器而且在网络上我找不到一个很好的例子来向我澄清这些机制。

我不理解的基本上是:用于渲染框的用途(目前我只使用了SpriteBatch和ShapeRenderer)以及如何检测何时单击了哪个框(我认为计算坐标不是这是一个很好的方式。我想最好的方法是在每个方框中添加一个点击监听器,以确定它何时会被点击,但我不知道如何编写代码。

感谢您的任何建议,如果您有一个例子,它可以帮助我很多。

2 个答案:

答案 0 :(得分:3)

Image image = new Image();

image.addListener(new ClickListener(){
    @Override
    public void clicked(InputEvent event, float x, float y) {
        System.out.println("You clicked an image...");
    }
});

现在我们可以将此图片添加到Table或直接添加到Stage

就像dtx12提到的那样,你应该研究Scene2D。您可能希望使用类似的表来设置网格。

Table chessTable = new Table();
int boardHeight = 8;
int boardWidth = 8;

for (int y = 0; y < boardHeight; y++)
{
    for (int x = 0; x < boardWidth; x++)
    {
        //Check if dividable by two to make checker pattern and add cell to table.
        if (x + y % 2 == 0)
            chessTable.add(blackImage);
        else 
            chessTable.add(whiteImage);
    }
    //Add a new row to table
    chessTable.row();
}

答案 1 :(得分:0)

Scene2d最适合您的用途,请查看文档。 https://github.com/libgdx/libgdx/wiki/Scene2d

例如,您可以将ActorGestureListener添加到已创建的actor中。 要使用ShapeRenderer渲染内容,您可以覆盖actor draw方法 并将矩阵应用于它们。但如果您只需要绘制框,那么使用矩形而不是使用ShapeRenderer会更好。选择您喜欢的变体。