When the keyboard repeat is enabled, keys that are held down will generate multiple pygame.KEYDOWN events. The delay is the number of milliseconds before the first repeated pygame.KEYDOWN will be sent. After that another pygame.KEYDOWN will be sent every interval milliseconds. If no arguments are passed the key repeat is disabled.
When pygame is initialized the key repeat is disabled.
KEYDOWN事件之后紧接着发生的KEYUP事件的问题是由主循环中的
display = pygame.display.set_mode((800, 600))
行引起的。程序在循环的每次迭代中都会创建一个新的显示。这条线,需要放在主循环之前,因为它应该放在主循环之前。这对于pygame.display.set_caption()
也是一样的,因为它也只需要调用一次。在这样做应该可以解决KEYUP事件的问题;但是,按住键仍然不起作用,因为在Pygame初始化时默认禁用了key repeat。要启用它,必须调用方法
pygame.key.set_repeat(delay, interval)
。这也应该在主循环之前进行。在在该方法中,值
delay
是第一次重复按键之前的延迟(以毫秒为单位),如果设置为零,按键重复将被禁用。值interval
是第一次重复之后每次连续重复之间的时间。可在here in the Pygame documantation中找到相关文档,说明如下:举个例子:
pygame.key.set_repeat(1, 15)
基本上没有延迟,并且应该提供一个基本平滑的旅行。在相关问题 更多 >
编程相关推荐