快板:为什么要等待一个事件或直到60毫秒结束

Allegro: Why wait for an event or until 60 milliseconds is up?

本文关键字:事件 60毫 结束 一个 为什么 等待 快板      更新时间:2023-10-16

在快板wiki上(http://wiki.allegro.cc/index.php?title=Allegro_5_Tutorial/Events)它显示了这个代码。

    bool get_event = al_wait_for_event_until(event_queue, &ev, &timeout);

我知道代码的作用,但为什么要等待事件或直到60毫秒结束?为什么不只是其中之一?

如果你等待一个事件,那可能是永远的。

这个问题可以通过问一个简单的问题来回答:如果事件从未发生,会发生什么?你想让你的程序坐在那里等待不会发生的事情吗?

有些事件或多或少是有可能发生的;它们没有发生意味着坏事正在发生。没有得到v-sync事件意味着显示器不再存在。或者什么的。没有得到计时器事件意味着Allegro计时器系统坏了(或者有人将计时器设置为非常长的持续时间)。但有些事件可能根本不会发生。

超时是存在的,以防事件从未被触发。这样,你就可以检测到它(通过返回值)并采取措施

永远等到某个事件发生,有什么不好的?

因为程序需要响应。假设您正在使用Allegro游戏编程库制作游戏。

你真的希望你的游戏因为某些事件而停止2分钟吗?您是否希望您的显示器在图像上冻结5分钟,而用户不知道发生了什么?或者你想弹出一个对话框,说:"嘿,我在等什么。等一下。"然后显示一个动画等待光标。

永远等待从来都不是一个好主意。