我正在“OpenGL”中编写游戏并使用“Gtkmm”作为窗口管理器。我想使用键盘来移动相机(因此,“向上键”向前移动,“向下键”向后移动,等等......)
前段时间,当我用 Java 编程时,我使用这种技术来“移动”:
当应用程序接收到例如“UP- keypress ”信号时,它随后将标志“shouldMoveForward”设置为“true”,当它后来收到“UP-key- release ”信号,它把标志设置回“false”。
并且“游戏循环”不断检查该标志,如果是真的,它会向前移动相机,否则它什么也不做。
所以我想在“Gtkmm”中使用相同的技术。所以我只是覆盖了我的"Gtk::DrawingArea"的这些功能:
bool Gtk::Widget::on_key_press_event(GdkEventKey* event)
bool Gtk::Widget::on_key_release_event(GdkEventKey* event)
但问题在于:例如,当我按下“UP”键并按住 5 秒钟时,会发出以下信号序列:
press ...<little time waiting>... release press release press release press release .......... press release press release
当我在“在 Linux 上”运行我的游戏时,会出现之前的情况。
当我“在 Windows 上”时,它就像我想要的那样,因此:
press ...<little time waiting>... press press press press press .......... press press release
所以这似乎是在 Gtkmm 中移动相机的“非便携式”解决方案。
那么是否有任何其他(“PORTABLE”)解决方案可以使用 Gtkmm 作为窗口管理器来实现相机移动?