Java Arrays - 同一对象的不同值

时间:2013-06-14 22:35:12

标签: java arraylist indexing slick2d

使用Slick2D我循环浏览我的按钮并突出显示当前正在悬停的按钮。我这样做是通过保存onHover事件触发的按钮的索引。但是,当我将鼠标悬停在第一个按钮上时,会突出显示最后一个按钮。将鼠标悬停在第二个按钮上会突出显示倒数第二个按钮,等等。如果我使用键盘更改所选按钮,它可以很好地工作。

以下是保存索引的方法:

public void onHover(int x, int y) {
    Button but;
    for (int i = 0; i < b.size(); i++) {
        but = b.get(i);
        if (but.isClicked(x, y)) {
            choice = i;
            return;
        }
    }
}

比较他们的那个:

public void draw(Graphics g) {
    Button but;
    for (int i = 0; i < b.size(); i++) {
        but = b.get(i);
        if (i == choice) {
            but.drawHighlighted(g);
        } else {
            but.draw(g);
        }
    }
}

有没有特殊的方法来做到这一点?

编辑: 我发现了问题所在。

来自LWJGL的Mouse.getY()(我使用onHover方法)返回窗口的高度减去鼠标的Y位置;而来自Slick2D的mouseReleased(button,x,y)(我使用draw方法)返回“true”Y位置。 但两者都以x位置返回相同的值。

我仍然不知道为什么值不同(因为Slick2D基于LWJGL),但为了绕过这个问题,我现在使用HEIGHT - Mouse.getY()来获得正确的位置。

非常感谢帮助我解决这个问题!

0 个答案:

没有答案