pygame KEYDOWN事件和键事件

时间:2016-02-24 04:20:26

标签: python pygame keydown

嗨,有一个问题在使用pygame开发游戏时并不重要,但一直困扰着我。

    while not gameExit:
        for event in pygame.event.get():e
            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_RIGHT:
                    pass

所以上面是一个有效的代码,我相信

    while not gameExit:
        for event in pygame.event.get():e
            if event.type == pygame.KEYDOWN and event.key == pygame.K_RIGHT:
                pass

也可以。

但是,当我尝试类似" event.key == pygame.K_RIGHT:"时,python会给我一个错误,说没有属性' key'。 虽然我知道选择2个以上代码而不仅仅是" event.key == pygame.K_RIGHT:",我不知道为什么pygame会说这个事件没有& #39; t具有属性' key'而当我只是检查是否event.type == pygame.KEYDOWN pygame执行时没有问题" event.key == pygame.K_RIGHT"。

是否可以检查event.type == pygame.KEYDOWN是否实际生成了一个'密钥'事件的属性?

1 个答案:

答案 0 :(得分:2)

并非每个事件都具有所有可能的属性。这就是为什么你必须先检查事件的类型。

Here's每种事件类型的所有属性列表:

QUIT             none
ACTIVEEVENT      gain, state
KEYDOWN          unicode, key, mod
KEYUP            key, mod
MOUSEMOTION      pos, rel, buttons
MOUSEBUTTONUP    pos, button
MOUSEBUTTONDOWN  pos, button
JOYAXISMOTION    joy, axis, value
JOYBALLMOTION    joy, ball, rel
JOYHATMOTION     joy, hat, value
JOYBUTTONUP      joy, button
JOYBUTTONDOWN    joy, button
VIDEORESIZE      size, w, h
VIDEOEXPOSE      none
USEREVENT        code

如您所见,只有KEYDOWNKEYUP个事件具有key属性。