Мышь LWJGL, выполняющая команду несколько раз случайным образом
Я пытаюсь настроить мою мышь LWJGL на захват, а не захват, когда я нажимаю левую кнопку мыши. Однако это оказалось непростым делом, поскольку мышь LWJGL в некоторых случаях выполняет команду несколько раз случайным образом. Для примера:
if (Mouse.isButtonDown(0)){
Mouse.setGrabbed( !Mouse.isGrabbed() );
System.out.println("Pushed");
}
if(Mouse.isGrabbed()){
camera.processMouse(1, 80, -80);
Если я запускаю этот код, он будет печатать несколько нажатий в случайном порядке за нажатие. Как вы можете себе представить, это становится проблемой, когда я пытаюсь заставить свою Мышь захватывать истину или ложь с каждого клика. раз я пробовал этот код, он напечатал "толкнул" 4 - 7 раз за клик
Есть ли способ заставить Мышь выполнять команду только один раз за клик?
заранее большое спасибо всем, кто поможет мне решить эту проблему.
Томас
1 ответ
Самый простой способ - проверить логическое поле, которое вы переворачиваете на первой итерации блока после щелчка или отпускания мыши, чтобы сказать вам, если это первый раз после щелчка, когда был выполнен блок if. Вот пример:
private boolean alreadyClicked;
void someMethod(){
if(Mouse.isButtonDown(0)){
if(!alreadyClicked){
alreadyClicked = true;
// do what you want to do when the mouse is clicked
}
}
else{
alreadyClicked = false;
}
}
В качестве альтернативы вы можете использовать буфер событий класса Mouse для определения щелчков следующим образом:
while(Mouse.next()) {
if(Mouse.getEventButton() == 0) {
if(Mouse.getEventButtonState()) {
// clicked
}
else{
// released
}
}
}