JavaFX的AnimationTimer出现问题。经过研究后,看来其他人也有这个问题。
AnimationTimer每秒不播放60帧。我使用的是144hz监视器,因此刷新率是144hz,AnimationTimer现在约为143/144 fps。如果将刷新率设置为60hz,它将再次达到60 fps。
在运行Ubuntu的笔记本电脑上,更糟糕的是,AnimationTimer出于某种原因在其中以300-500 fps的速度运行。
有什么方法可以使AnimationTimer达到60 FPS,或者如果不可能,我如何在javafx中归档60 FPS循环。
答案 0 :(得分:1)
有几个不同的主题,所以我鼓励任何到达这里的人继续寻找。
这个bug report似乎有用。
作为止步措施,我做了以下工作。 IDK是否真的“解决”了任何问题。似乎有可能通过handle()方法进行大量旋转,从而消耗CPU。
// instance variable
private long previousTimestamp;
private long nanoSecsPerFrame = Math.round(1.0/60 * 1e9);
// handle method
public void handle(long timeStamp)
{
if (timeStamp - prevTimeStamp < nanoSecsPerFrame)
{
return;
}
prevTimeStamp = timeStamp;
// your code
}
我在Ubuntu Desktop 18.04的存储库java-8-openjdk-amd64中遇到此问题。
AnimatinTimer
在Windows 10上使用带有OpenJFX 11的OpenJDK 11或仅使用预模块化OpenJDX8都可以正常工作。我希望在Ubuntu上切换到模块化Java / JavaFX可以解决此问题。
答案 1 :(得分:0)