LWJGL:在 getButtonCount returns 0 时检测 left/right 点击
LWJGL: detecting left/right clicks when getButtonCount returns 0
在 Dell Inspiron 15 3000 上,触摸板没有任何物理 left/right 按钮。相反,它是一个巨大的压力敏感触摸板。我假设它根据手在触控板上的位置检测到 right/left 次点击。
在我的 LWJGL 应用程序中,我使用 Mouse.isButtonDown(0)
检测鼠标按钮点击。这在带有物理按钮的鼠标的计算机上工作正常,但在缺少物理按钮的触摸板上不起作用。 Mouse.getButtonCount()
returns 0。
是否有人成功检测是否按下了鼠标按钮,用户是否应该使用没有物理按钮的触控板?
我认为,而不是使用
org.lwjgl.input.Mouse
这个 class 可能是您要搜索的内容:
org.lwjgl.input.Controllers
http://legacy.lwjgl.org/javadoc/org/lwjgl/input/Controllers.html
不过我不太确定,因为我只有鼠标,无法使用触摸板进行测试。
对于那些以后发现这个问题的人,我确实找到了修复方法:
你不能,如果没有物理按钮,使用Mouse.isButtonDown()
方法。相反,您将不得不读取事件缓冲区。为此,我编写了自己的助手 class:
public class Mouse{
private static boolean button_left = false, button_right = false;
public static boolean isButtonDown(int button){
if(button == 0) return button_left;
if(button == 1) return button_right;
return false;
}
public static void update(){
while(org.lwjgl.input.Mouse.next()){
if(org.lwjgl.input.Mouse.getEventButton() == 0) button_left = org.lwjgl.input.Mouse.getEventButtonState();
if(org.lwjgl.input.Mouse.getEventButton() == 1) button_right = org.lwjgl.input.Mouse.getEventButtonState();
}
}
}
update()
方法在每次滴答时都会被调用,因此我可以使用 Mouse.isButtonDown(button)
.
获取按钮状态
在 Dell Inspiron 15 3000 上,触摸板没有任何物理 left/right 按钮。相反,它是一个巨大的压力敏感触摸板。我假设它根据手在触控板上的位置检测到 right/left 次点击。
在我的 LWJGL 应用程序中,我使用 Mouse.isButtonDown(0)
检测鼠标按钮点击。这在带有物理按钮的鼠标的计算机上工作正常,但在缺少物理按钮的触摸板上不起作用。 Mouse.getButtonCount()
returns 0。
是否有人成功检测是否按下了鼠标按钮,用户是否应该使用没有物理按钮的触控板?
我认为,而不是使用
org.lwjgl.input.Mouse
这个 class 可能是您要搜索的内容:
org.lwjgl.input.Controllers
http://legacy.lwjgl.org/javadoc/org/lwjgl/input/Controllers.html
不过我不太确定,因为我只有鼠标,无法使用触摸板进行测试。
对于那些以后发现这个问题的人,我确实找到了修复方法:
你不能,如果没有物理按钮,使用Mouse.isButtonDown()
方法。相反,您将不得不读取事件缓冲区。为此,我编写了自己的助手 class:
public class Mouse{
private static boolean button_left = false, button_right = false;
public static boolean isButtonDown(int button){
if(button == 0) return button_left;
if(button == 1) return button_right;
return false;
}
public static void update(){
while(org.lwjgl.input.Mouse.next()){
if(org.lwjgl.input.Mouse.getEventButton() == 0) button_left = org.lwjgl.input.Mouse.getEventButtonState();
if(org.lwjgl.input.Mouse.getEventButton() == 1) button_right = org.lwjgl.input.Mouse.getEventButtonState();
}
}
}
update()
方法在每次滴答时都会被调用,因此我可以使用 Mouse.isButtonDown(button)
.