0

使用 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 方法一起使用)返回“真实”的 Y 位置。但两者都返回与 x 位置相同的值。

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

感谢大家帮助我解决这个问题!

4

0 回答 0