代码之家  ›  专栏  ›  技术社区  ›  Cristián Romo

lua中的异步输入

  •  1
  • Cristián Romo  · 技术社区  · 15 年前

    In a related question I asked how to get input via IUP . 这是很好的工作,除了它通过系统,并受再创造率,这不是一个游戏的最佳选择。我真正想要的是能够在给定时间获得任何键的当前状态。有没有办法(通过IUP或其他方式)做到这一点?

    1 回复  |  直到 15 年前
        1
  •  1
  •   RBerteig Keith Adler    15 年前

    您可能需要包装对适当的win32 api、directx或lua模块中的任何内容的调用。在IUP中捕捉关键的中风事件需要通过“普通”的Windows消息机制传递到窗口或控件,这可能不是游戏框架中的最佳方法。

    可以使用IUP计时器对象按计划运行重绘,但仍然需要一种方法来收集键盘状态。如果你想使用一个游戏板,操纵杆,或任何隐藏除了键盘和鼠标,那么IUP将不会在任何情况下直接帮助。

    这很容易用编译成DLL的少量C代码完成。

    可以很容易地用 SWIG 对于某些类型的API。其他人将采取足够的设置/拆卸工作,这是更容易只是手工包装。

    还有 Alien Lua模块,允许从纯Lua直接调用任意API。外国人包括在 Lua for Windows 以及在Luaferge的项目页面。外星生物本身甚至可以在不同的平台上进行移植,尽管你不会用它来调用它。

    当你沿着这条路前进时,你还可以看到一个或多个现有的游戏引擎。通常,它们隐藏在引擎内的事件循环(与IUP一样),但它们是为游戏构建而不是桌面应用程序而优化的。

    我在Lua邮件列表上听说了一个数字。因为经常提到它而想到的是 LÖVE .