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 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()
但是你只按下向下键不到一秒钟就会打印出成千上万次。(移动玩家将是不可能的,调整时钟也似乎不是处理它的正确方法(我已经尝试过,但失败惨重))。
按下并执行成千上万次的块是无用的。我的需求是,在我不释放按键的情况下,继续进行该操作,并保持在定义的游戏时钟速度内。