在 allegro 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 毫秒结束?为什么不只是其中一个?
如果你等待一个事件,那可能是永远的。
通过提出一个简单的问题来回答这个问题:如果事件永远不会发生会发生什么?你想让你的程序坐在那里等待不会发生的事情吗?
有些事件或多或少肯定会发生;它们没有发生意味着坏事正在发生。没有得到垂直同步事件意味着显示器不再存在。或者其他的东西。没有收到计时器事件意味着 Allegro 计时器系统已损坏(或者有人将计时器设置为非常长的持续时间)。但有些事件可能根本不会发生。
如果该事件从未被触发,则存在超时。这样,您可以检测到它(通过返回值)并对其进行处理。
永远等待事件发生有什么不好?
因为程序需要响应。大概您正在使用 Allegro游戏编程库来制作游戏。
你真的希望你的游戏因为某个事件而停止 2 分钟吗?您是否希望您的显示器在图像上冻结 5 分钟,而用户不知道发生了什么?或者你是否希望能够弹出一个对话框说,“嘿,我在等什么。等一下。” 然后显示一个动画等待光标。
永远等待永远不是一个好主意。