【发布时间】:2022-01-15 06:11:24
【问题描述】:
我正在尝试检索按键之间的持续时间(以毫秒为单位)。在这种情况下,我只是在 KeyEvents 方法 keypressed 和 keyreleased 之间轻按一下。我正在使用 Duration 类,最初它可以工作,但现在它记录的时间跨度不正确。
我在 keypressed 和 keyreleased 方法中记录时间,添加代码 start = Instant.now();和 end = Instant.now();分别对每种方法。在 keyreleased 类中,然后我通过编码来测量持续时间
Duration span = Duration.between();
long timelapse = span.toMillis();
如果我调试,IDE 控制台中的变量显示如下:
开始 = "2022-01-15T05:48:32.065492Z"
end = "2022-01-15T05:48:38.5196766Z"
span = "PT6.454184S" {seconds = 6 ,nanos = 454184000 }
如果我要以毫秒为单位检索持续时间的值,span.toMillis() = 6454,我知道我没有按住密钥 6 秒。大概在 30 到 100 毫秒之间。
我能做些什么来纠正这个问题吗?如果没有,是否有另一种方法可以找到击键之间的准确持续时间?
编辑:我确实想指出,这些方法实际上是测量用户输入之间经过的时间量。这样做的原因是为了计算运动。按住按钮的时间决定了图像移动的距离。在这种情况下,我只是轻按一下,我只希望图像在没有任何移动的情况下改变方向。
我想可能持续时间类需要更长的时间,因为我一直在为功能添加越来越多的代码。所以我真正希望做的是在其他运行的类和方法中找到正确的时间,如果可能的话。
【问题讨论】:
-
查看您的
start和end时间戳,它们 相隔 6 秒(第二部分是 32 和 38),因此计算是正确的。您应该检查如何进行开始和结束测量。 -
欢迎来到 Stack Overflow。请通过tour 了解 Stack Overflow 的工作原理,并阅读How to Ask 以了解如何提高问题的质量。然后edit你的问题包含你的源代码作为工作minimal reproducible example,可以被其他人编译和测试。
标签: java events duration keyevent milliseconds