所以我有这段代码来处理吃豆人风格游戏的用户输入。
def receiving_inputs(self):
while True:
events = pg.event.get()
for event in events:
if event.type == pg.KEYDOWN:
if event.key == pg.K_UP:
self.move = 'n'
elif event.key == pg.K_RIGHT:
self.move = 'e'
elif event.key == pg.K_DOWN:
self.move = 's'
elif event.key == pg.K_LEFT:
self.move = 'w'
time.sleep(1/60)
threading.Thread(target=self.receiving_inputs).start()
当我按下键盘上的任何键时,我没有收到任何事件,但是,移动鼠标将使用此代码返回一个事件。
令人烦恼的是,这段代码在不在线程中时可以完美运行。即当处于程序的主循环中时。
仅供参考,我想在这里使用一个线程来最大程度地减少 pygame 未注册按键的次数(我假设这是由于主循环中的其他原因造成的)。
提前致谢。
你根本得不到任何事件,因为你必须在主线程中获取事件。
请参阅文档pygame.event https://www.pygame.org/docs/ref/event.html:
[...] 事件子系统应该从主线程调用。
只能从其他线程发布事件,但事件队列必须在主线程中处理。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)