【发布时间】:2014-04-01 08:48:04
【问题描述】:
我发现了两个相关的问题:
但我想具体一点。怎么做?
while not done:
for e in event.get():
if e.type == KEYDOWN:
keys = key.get_pressed()
if e.type == QUIT or keys[K_ESCAPE]:
done = True
if keys[K_DOWN]:
print "DOWN"
当我按下向下箭头时,它会打印,但它只打印一次。如果我想再打印一次,我需要再按一次。
如果我改用 while 关键字,
while keys[K_DOWN]:
print "DOWN"
由于某种不明原因,我得到了一个无限循环。
这种合乎逻辑的选择也是没用的:
if ((e.type == KEYDOWN) and keys[K_DOWN]):
print "DOWN"
还有另一个以某种方式清除事件,您可以使用 while:
while not done:
for e in event.get():
if e.type == KEYDOWN:
keys = key.get_pressed()
if e.type == QUIT or keys[K_ESCAPE]:
done = True
while keys[K_DOWN]:
print "DOWN"
event.get()
keys = key.get_pressed()
但是您按下向下键不到一秒钟,它就会打印数千次。 (移动玩家是不可能的,为此调整时钟似乎不是处理它的正确方法(我已经尝试过,但我失败了。)。
按数千次执行该块是没有用的。我想要的是在定义的游戏时钟速度内按下键并继续执行操作,而我不释放它。
【问题讨论】:
标签: python input key pygame keydown