当您按住按键,你的代码切换robsHouse.pressed
每一帧的原因是因为key[pygame.K_z]
条件将得到满足每个循环迭代时,键盘会下来,然后第二个条件将导致交替的帧相互满足。
不改变您检索关键数据的方式,你可以做这样的事情:
if key[pygame.K_z]:
robsHouse.pressed = True
else:
robsHouse.pressed = False
另一种方法是找到pygame中的事件模块KEYUP
和KEYDOWN
事件,而不是从密钥获取关键数据模块。可以做这样的:
for event in pygame.event.get():
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_z:
robsHouse.pressed = True
elif event.type == pygame.KEYUP:
if event.key == pygame.K_z:
robsHouse.pressed = False
就个人而言,我更喜欢在大多数情况下,第二种方法。无论如何,您将需要从pygame的事件模块处理事件,否则队列将会填满,程序将无响应(这在pygame事件模块文档中提到过)。
来源
2013-08-28 19:07:27
Haz
是实际嵌套在if语句中的elif,还是只在复制代码时出错?因为如果elif在if内,那么会导致问题。 – Chachmu