3

我正在用 Java 编写游戏。而且,哦,奇迹,我有性能问题。我对油漆本身进行了基准测试——在 3 毫秒内循环了 1000 次。游戏逻辑甚至低于此。到现在为止还挺好。但我仍然遇到一个恼人的延迟:滚动时、缩放时、单击时。当我放大并放置更多对象时,问题会变得更糟。但是仍然 - 即使我将绘画循环 1000 次,滞后或多或少都保持不变,所以不可能。我试着把循环放在一个任务中——还是一样。我试着在绘画之间暂停任务——还是一样。动画像丝绸一样流畅(因为帧率稳定且高,这是有道理的)。那么我到底如何有序地组织输入呢?把它们都放在一个单独的线程中?任何输入将不胜感激!

4

1 回答 1

9

听起来您直接在 Swing 事件调度线程上使用侦听器回调,其中 UI 更新正在完成。您应该使用命令队列,并在调用回调时根据命令的性质将事件放在队列中,然后在与 EDT 无关的主游戏更新循环中使用它。

于 2011-09-27T22:04:35.220 回答