0

我需要在 bool 上使用,因为模块 pygame.midi 仅通过返回 boolselect()的函数让您知道 midi 消息何时准备好。Input.poll()

如果我以简单的方式检查这个值,我会忙着等待,我的 cpu 一直在 100% 工作。

有没有办法使用select()或类似的函数来等待变量在上下文中更改其值而不自动引发事件?

(严格来说,我并不需要平静地生活,我确实很想使用它们,但我在包装中的任何地方都看不到 midi 事件..)

4

2 回答 2

2

开发游戏时,您通常在主循环中完成所有操作。如果您想要例如 50 fps,那么您想要以每秒 50 次的速度通过这个循环。如果您假设您没有做任何耗时的事情,那么您可以在每次迭代结束时休眠 20 毫秒。

所以我认为这就是为什么只有 poll 可用的原因,你应该检查 midi 是否加载到你的循环中。如果是,那么你可以用它做一些事情,否则你会继续渲染或做其他事情。通常,在创建应该具有一致 fps 的游戏和应用程序时,您不想等待某些事件。

于 2013-05-29T19:42:50.973 回答
0

如果您的输入无法触发事件,则必须在计时器上进行检查。

在大多数游戏中,您的主事件循环已经有一些“帧限制器”代码,因此事件循环运行不超过 50 次/秒。poll因此,每个事件循环只能执行一次。如果没有,您现在基本上必须添加帧限制器。

如果你的游戏由于某种原因不符合这个范例——或者如果你需要比你的最大帧速率更频繁地轮询输入——你必须编写一个从输入中读取的后台线程(如果可能,阻塞,轮询和休眠)如果不是),或者直接处理事件,或者将其推送到主线程每次通过循环都可以读取的队列中。

于 2013-05-29T19:46:30.047 回答