我正在编写一个菜单并使用keyState[SDL_SCANCODE_KEY]
来检测在这样的循环中按下某个键的时间:
if (Button1 && keyState[SDL_SCANCODE_DOWN])
{
Button1 = false;
Button2 = true;
}
else if (Button2 && keyState[SDL_SCANCODE_DOWN])
{
Button2 = false;
Button3 = true;
}
else if (button3 && keyState[SDL_SCANCODE_DOWN])
{
//and so on
}
这种设置的问题是,当用户按下向下键时,键状态多次触发,保持按钮2的状态切换到按钮3激活等等。那么如何才能让keystate只触发一次,或者至少解决这个问题呢?感谢。
答案 0 :(得分:0)
这是因为您的系统(CPU)运行速度太快。为避免这种情况,您可以使用计时器或延迟。
要简单解决,您可以使用延迟。最后,尝试
delay(1000); // which means delay 1000 clock cycles.
您可以通过修改数字(即1000)来调整长度,但请注意在复杂系统中使用延迟功能可能至关重要。在该系统中,可以使用Timer,但实现起来比这更复杂。