3
轮询与事件驱动的输入
我正在开发使用轮询输入法的游戏。但是,既然我正在更深入地研究游戏菜单和其他UI组件,我发现我可能想拥有事件驱动的输入。甚至可以同时使用事件驱动的UI和轮询的“世界”输入。我对最好的方式是很好奇。 我将轮询定义为:每个更新循环都检查按下了哪些键,鼠标在哪里,按下了按钮,然后遍历它们并根据收集到的信息执行操作。 我将事件驱动定义为:基于中断的事件,当事件发生并触发中断并基于该事件运行代码块时。 您是否认为最好进行所有事件驱动,全部轮询,或者两者都可以接受?如果您有两者的优缺点,请列出。谢谢。 编辑 该游戏基于Java / OpenGL,因此将发布到Windows / Mac / Linux。将其扩展到移动设备的可能性很小。游戏是RTS风格的第三人称3D。 编辑2 我对实现此方法的方式仍然不完全满意,但是我要转向的是在UI中捕获事件,如果事件未由我的任何UI组件处理,我会将事件传递给用于选择的“世界”。就像是: @Override private boolean handleEvent(Event event) { if(hud.handleEvent(event)) { return true; } return WORLD.handleEvent(event); } 这样,我不会从用户界面中泄漏点击以选择按钮后面的对象,而不是其他。 目前,我的摄像头控件仍然基于轮询,并且目前似乎可以正常使用,但稍后可能会进行更新。 我感谢所有答案,对不起,我只能选择其中一个!