Как запретить Libgdx рисовать несколько объектов

#java #function #libgdx #game-engine

#java #функция #libgdx #игровой движок

Вопрос:

ИТАК, у меня есть функция, которая выводит объекты на экран, и всякий раз, когда нажата левая кнопка мыши, вызывается эта функция. Проблема в том, что компьютер работает очень быстро, программа думает, что я продолжаю нажимать левую кнопку мыши в течение 0,5 секунды, и функция вызывается несколько раз. Как я могу предотвратить это?

Заранее спасибо.

Функция:

 public void drawAll(){
batch.begin();
for( int i = 0; i < 10000; i  ){
if( Assets.draws[i].draw == true ){ batch.draw( Assets.draws[i].sprite, Assets.draws[i].x, Assets.draws[i].y); }
}
batch.end();
}

public void pressedLeft(){
float x = Gdx.input.getX();
float y = Gdx.input.getY();
boolean contin = true;
for( int i = 0; i < 10000; i  ){
if( contin == true amp;amp; Assets.draws[i].draw == false ){ Assets.draws[i].draw = true; contin = false; Assets.draws[i].x = x; Assets.draws[i].y = y; }

   } 
}

@Override
public void render(){
.
.
.
drawAll();

if( Gdx.input.isButtonPressed( Input.Buttons.LEFT ) ){ pressedLeft(); }

}
  

Комментарии:

1. Вопросы, обращающиеся за помощью по отладке («почему этот код не работает?»), должны включать желаемое поведение, конкретную проблему или ошибку и кратчайший код, необходимый для ее воспроизведения в самом вопросе. Вопросы без четкой формулировки проблемы не полезны для других читателей.

2. Отредактировано. Теперь все в порядке?

3. Лучше. Вы должны помнить нажатое состояние и реагировать только в первый раз, когда нажатие изменяется с false на true. Возможно, что libgdx даже содержит функциональность для этого, где функция запускается только при нажатии или отпускании клавиши, а не при ее удержании нажатой.

4. Наконец-то решена проблема. Я создал новый класс, который реализует InputProcessor, и у этого класса была функция с именем TouchUp, поэтому я смог заставить ее работать. Спасибо за помощь. В следующий раз, когда я задам вопрос, буду более осторожен.