JavaFX AnimationTimer每秒更新超过60次

JavaFX AnimationTimer每秒更新超过60次,java,javafx,Java,Javafx,我对JavaFX的AnimationTimer有问题。在做了一些研究之后,其他人似乎也有这个问题 AnimationTimer没有每秒执行60帧。我有一个144hz的监视器,因此我的刷新率是144hz,AnimationTimer现在大约是143/144 fps。如果我将刷新率设置为60hz,它将再次以每秒60帧的速度刷新 更糟糕的是,在我运行Ubuntu的笔记本电脑上,AnimationTimer出于某种原因在那里以300-500 fps的速度运行 有没有办法让AnimationTimer以6

我对JavaFX的AnimationTimer有问题。在做了一些研究之后,其他人似乎也有这个问题

AnimationTimer没有每秒执行60帧。我有一个144hz的监视器,因此我的刷新率是144hz,AnimationTimer现在大约是143/144 fps。如果我将刷新率设置为60hz,它将再次以每秒60帧的速度刷新

更糟糕的是,在我运行Ubuntu的笔记本电脑上,AnimationTimer出于某种原因在那里以300-500 fps的速度运行


有没有办法让AnimationTimer以60 FPS的速度运行,或者如果不可能,我将如何在javafx中归档一个60 FPS的循环。

以防将来有人通过谷歌搜索找到它,而该错误仍未修复


这将有助于您在恒定帧速率下运行游戏循环

这方面有两条不同的线索,所以我鼓励来到这里的人继续寻找

这似乎与我有关

作为权宜之计,我做了以下几点。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
}
//实例变量
私有长前时间戳;
专用长NanoSecrFrame=数学圆(1.0/60*1e9);
//处理方法
公共无效句柄(长时间戳)
{
if(时间戳-prevTimeStamp
我对Ubuntu Desktop 18.04的存储库java-8-openjdk-amd64有这个问题


animatiintimer
在Windows 10上使用OpenJDK 11和OpenJFX 11或只使用预模块化的OpenJDX8都可以很好地工作。我希望在Ubuntu上切换到模块化Java/JavaFX可以解决这个问题。

请阅读并相应地增强您的问题。当我单击链接时,收到一条服务器关闭消息。幸运的是,它已被internet存档捕获: