#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, поэтому я смог заставить ее работать. Спасибо за помощь. В следующий раз, когда я задам вопрос, буду более осторожен.