pygame KEYDOWN事件和关键事件 [英] pygame KEYDOWN event and key events
问题描述
有一个问题在使用pygame开发游戏时并没有多大关系,但一直困扰着我一段时间.
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.
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
也可以.
但是,当我只尝试类似"event.key == pygame.K_RIGHT:"之类的内容时,python给我一个错误,提示没有属性"key". 虽然我知道在"event.key == pygame.K_RIGHT:"上选择以上两个代码更为合理,但我不知道为什么pygame会在事件发生时说事件没有属性'key'我只是检查event.type == pygame.KEYDOWN pygame是否可以顺利执行"event.key == pygame.K_RIGHT".
However, when I just try something like "event.key == pygame.K_RIGHT:", python gives me an error saying there is no attribute '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.type == pygame.KEYDOWN是否真的为该事件生成了一个'key'属性?
Could it be that checking if event.type == pygame.KEYDOWN actually generates a 'key' attribute for the event?
推荐答案
并非每个事件都具有所有可能的属性.这就是为什么您必须首先检查事件的类型.
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
如您所见,只有KEYDOWN
和KEYUP
事件具有key
属性.
As you can see, only KEYDOWN
and KEYUP
events have the key
attribute.
这篇关于pygame KEYDOWN事件和关键事件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!