我正在制作游戏并且目前遇到了图形抖动的问题。按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,因为我认为这是错误隐藏的地方。
答案 0 :(得分:0)
您应该使用double buffering or page flipping来避免抖动。
答案 1 :(得分:0)
这是一个有根据的猜测,因为没有可用的来源。这个问题很可能与你如何处理输入有关,因为如果密钥是通过KeyListener
接口注册的,按键之间存在固有的延迟,因此java2d游戏的输入存在常见错误。如果你按下一个键(a)你期望的是aaaaa..
,但实际得到的是a|inputlag|a|inputlag|...
这个延迟相当大(远高于通常的60 FPS)所以当你按下时将相机移动到相机附近的按键似乎很紧张。
简单的解决方案是对键使用布尔标志,并在按下键时将它们设置为true,并在释放后将其设置为false,请参阅我的示例代码here。或使用keybindings。