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