2017-09-25 28 views

回答

1

我想你想使用pygame.key.get_pressed()如下。

for event in pygame.event.get(): 
    if event.type == QUIT: 
     pygame.quit() 
     sys.exit() 

pressed_keys = pygame.key.get_pressed() 
if pressed_keys[K_RIGHT]: 
    posX += velocidad 
if pressed_keys[K_LEFT]: 
    posX -= velocidad 

event.type == pygame.KEYDOWN仅当第一次按下按键时才会捕获。 如果你想使用它,你可以切换一些属性,比如your_object.movi​​ng_right = True。然后使用键盘再次关闭它。

0

总的来说,我认为你想要什么是检查event.key与一个if语句。

但是,您的代码存在多个问题(包括结构和语法)。 event.type不会改变,所以使用while没有任何意义(这将永远运行并使程序挂起)。我不确定您的意图与== 1比较是什么,因为K_RIGHT和K_LEFT是关键代码值的任意常量。更何况right == K_RIGHT是一个什么都不做的表达式(你的意思是right = K_RIGHT?),你有一个明确的错别字lef。我认为最紧密的工作代码,您所提供的结构(假设未显示也适用其他的代码)将是这个样子:

for event in pygame.event.get(): 
    if event.type == QUIT: 
    pygame.quit() 
    sys.exit() 

    if event.type == pygame.KEYDOWN: 
    right = K_RIGHT 
    left = K_LEFT 
    if event.key == right: 
     posX += velocidad 
    elif event.key == left: 
     posX -= velocidad 
相关问题