2013-10-21 105 views
0

pygame我想要使用每个箭头键在每个方向上10%的图像翻译图像。现在我使用的代码只要按下按键就会移动图像,我想要的是仅仅移动一次,无论按键是否仍然按下。Pygame单推事件

if event.type == KEYDOWN: 
    if (event.key == K_RIGHT): 
     DISPLAYSURF.fill((255,255,255)) #Clears the screen 
     translation_x(100) 
     draw(1) 
    if (event.key == K_LEFT): 
     DISPLAYSURF.fill((255,255,255)) #Clears the screen 
     translation_x(-100) 
     draw(2) 
    if (event.key == K_UP): 
     DISPLAYSURF.fill((255,255,255)) #Clears the screen 
     translation_y(100) 
     draw(3) 
    if (event.key == K_DOWN): 
     DISPLAYSURF.fill((255,255,255)) #Clears the screen 
     translation_y(-100) 
     draw(4) 

有没有除了使用time.sleep

+0

你可以停止,直到你收到相应的按键了事件的关键的关键下来后反应。 – flup

+0

根据[pygame的文档](http://www.pygame.org/docs/ref/key.html),只有一个keydown事件被接收,直到该键被释放并随后再次按下。你确定接受连续的keydown事件是你问题的根源吗? – kevintodisco

+0

ktodisco是对的。什么是'draw(int)'在做什么? ---另一种方法是获取按键状态,该按键状态轮询按键是否被按下。 – ninMonkey

回答

2

您可以使用pygame.key.set_repeat()从仍在向下键禁用重复的事件实现这个的一个简单的方法。

然而,默认情况下应禁用:

启用键盘重复,保留的向下键将产生多个pygame.KEYDOWN事件。延迟是第一次重复pygame.KEYDOWN发送之前的毫秒数。之后,另一个pygame.KEYDOWN将每间隔毫秒发送一次。如果没有参数通过,则重复键被禁用。

当pygame的初始化键重复无效