使用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()来获得正确的位置。
非常感谢帮助我解决这个问题!