【问题标题】:Allegro: Why wait for an event or until 60 milliseconds is up?Allegro:为什么要等待一个事件或直到 60 毫秒结束?
【发布时间】:2012-02-28 23:45:07
【问题描述】:

在 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 毫秒结束?为什么不只是其中一个?

【问题讨论】:

  • 本教程试图通过不引入计时器来简单化。超时只是用来代替以 60fps 滴答作响的计时器。它需要打破来绘制窗口,因为如果它被拖出屏幕,最小化等,它可能会被用户无效。

标签: c++ timer allegro


【解决方案1】:

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

【讨论】:

  • 但它不会做任何其他事情,对吧?永远等到事件发生有什么不好?
【解决方案2】:

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

有些事件或多或少肯定会发生;它们没有发生意味着坏事正在发生。没有得到垂直同步事件意味着显示器不再存在。或者其他的东西。没有收到计时器事件意味着 Allegro 计时器系统已损坏(或者有人将计时器设置为非常长的持续时间)。但有些事件可能根本不会发生。

如果该事件从未被触发,则存在超时。这样,您就可以检测到它(通过返回值)并对其进行处理。

永远等到事件发生有什么不好?

因为程序需要响应。大概您正在使用 Allegro Game 编程库来制作游戏。

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

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

【讨论】:

    猜你喜欢
    • 2019-06-05
    • 2021-08-24
    • 2014-10-09
    • 2017-03-23
    • 2015-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多