简体   繁体   English

pygame KEYDOWN事件和关键事件

[英]pygame KEYDOWN event and key events

Hi there is an issue that doesn't really matter when developing a game with pygame but that kept on bothering me for a while. 嗨,有一个问题在使用pygame开发游戏时并没有多大关系,但一直困扰着我一段时间。

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

so above is a working code and I believe 所以上面是一个有效的代码,我相信

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

works as well. 也可以。

However, when I just try something like "event.key == pygame.K_RIGHT:", python gives me an error saying there is no attribute 'key'. 但是,当我只尝试使用类似“ event.key == pygame.K_RIGHT:”的方法时,python给我一个错误,指出没有属性'key'。 While I know it'd be more reasonable to choose above 2 codes over just "event.key == pygame.K_RIGHT:", I don't know why pygame would say the event doesn't have the attribute 'key' while when I simply check if event.type == pygame.KEYDOWN pygame will have no problem executing "event.key == pygame.K_RIGHT". 虽然我知道在“ event.key == pygame.K_RIGHT:”上选择以上两个代码更为合理,但我不知道为什么pygame会在事件发生时说事件没有属性'key'我只是检查event.type == pygame.KEYDOWN pygame是否可以顺利执行“ event.key == pygame.K_RIGHT”。

Could it be that checking if event.type == pygame.KEYDOWN actually generates a 'key' attribute for the event? 难道是检查event.type == pygame.KEYDOWN是否实际上为该事件生成了一个'key'属性?

Not every event has all possbile attributes. 并非每个事件都具有所有可能的属性。 that's why you have to check the type of the event first. 这就是为什么您必须首先检查事件的类型。

Here's a list of all attributes for each event type: 以下是每种事件类型的所有属性的列表:

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

As you can see, only KEYDOWN and KEYUP events have the key attribute. 如您所见,只有KEYDOWNKEYUP事件具有key属性。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM