我正在编写一个菜单,并使用 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 的条件保持事件状态,依此类推。那么如何让键态只触发一次,或者至少解决这个问题呢?谢谢。
发生这种情况是因为您的系统 (CPU) 运行速度太快。为避免这种情况,您可以使用计时器或延迟。
要简单解决,可以使用delay。最后,试试
delay(1000); // which means delay 1000 clock cycles.
您可以通过修改数字(即 1000)来调整长度,但请注意,在复杂系统中使用延迟功能可能至关重要。在该系统中,可以使用Timer,但实现起来比这更复杂。
我是一名优秀的程序员,十分优秀!