У меня есть следующая функция, которая используется в качестве параметра функции glutKeyboardFunc:
void handleKeypress(unsigned char key, //The key that was pressed
int x, int y) { //The current mouse coordinates
switch (key) {
case 27: //Escape key
exit(0); //Exit the program
}
if (key == 'a')
{
moveCircleLeft(0);
}
if (key == 'w')
{
moveCircleUp(0);
}
if (key == 's')
{
moveCircleDown(0);
}
if (key == 'd')
{
moveCircleRight(0);
}
}
Теперь я покажу вам moveCircleLeft как пример написания moveCircle функций:
void moveCircleLeft(int x)
{
characterX = characterX - 0.1;
glutPostRedisplay();
x++;
if (x < 10)
{
glutTimerFunc(10, moveCircleLeft, x);
}
}
Другие функции moveCircle работают аналогично, и единственная разница между четырьмя функциями заключается в том, является ли это плюс минус 0,1 или это characterY, а не characterX.
Теперь вот проблема:
Все направления движутся в правильном направлении, но есть задержка/пауза в движении персонажа, когда я пытаюсь нажимать клавиши. Итак, если я нажимаю только клавишу d (moveCircleRight), он немного перемещается вправо, останавливается на небольшой промежуток времени, а затем перемещается по экрану в этом направлении с постоянной скоростью без пауз. Затем, если я перехожу на другую клавишу, она делает небольшую паузу перед изменением направления, а затем движется с постоянной скоростью в этом направлении.
Любое предложение по этому поводу будет оценено!