【问题标题】:Graphics Jittering in Java 2D gameJava 2D 游戏中的图形抖动
【发布时间】:2013-08-30 15:41:51
【问题描述】:

我正在制作游戏,目前遇到了图形抖动的问题。当您按下 AWSD 键时,它从顶部开始抖动。抖动从顶部开始并蔓延到整个屏幕。 这是一个视频文件:https://dl.dropboxusercontent.com/u/94218355/javaw%202013-08-30%2010-36-45-171.avi

这里是游戏文件:https://dl.dropboxusercontent.com/u/94218355/Game.rar 游戏文件是这样你可以自己测试的。 请查看 Screen.java,因为我认为这是隐藏错误的地方。

【问题讨论】:

  • 如果你想让人们阅读你的整个代码库,我建议你告诉我们去哪里看。
  • 最好在您的问题中发布相关数据。大多数人不太可能想通读代码墙,甚至不太可能想将文件下载到他们的机器上。

标签: java 2d


【解决方案1】:

您应该使用double buffering or page flipping 来避免抖动。

【讨论】:

  • 我正在调查,谢谢。我尝试了双缓冲,结果相同。我通常使用三重缓冲。
【解决方案2】:

这是一个有根据的猜测,因为没有可用的来源。问题可能与您处理输入的方式有关,java2d 游戏中的输入存在一个常见错误,因为如果通过KeyListener 接口注册按键,则按键之间存在固有延迟。如果您按住一个键 (a),您期望得到的是 aaaaa..,但实际得到的是 a|inputlag|a|inputlag|...,这个延迟非常大(比通常的 60 FPS 高很多),所以当您按住键移动相机 相机似乎很紧张。

简单的解决方案是对按键使用布尔标志,并在按下按键时将其设置为 true,在松开按键后将其设置为 false,请参阅我的示例代码 here。或使用keybindings

【讨论】:

  • 我刚刚添加了源代码。很抱歉第一次忘记了。
  • 是的,正如我所怀疑的那样,因为您正在扩展画布并执行 addKeyListener 您正在实现 KeyListener 接口,这意味着您会遇到我描述的延迟。
猜你喜欢
  • 1970-01-01
  • 2020-07-16
  • 2023-03-07
  • 1970-01-01
  • 2012-02-15
  • 2018-08-19
  • 2014-01-21
  • 2017-08-12
  • 1970-01-01
相关资源
最近更新 更多