嗨,有一个问题在使用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是否实际生成了一个'密钥'事件的属性?
答案 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
如您所见,只有KEYDOWN
和KEYUP
个事件具有key
属性。