我正在尝试在java中创建一个键盘,在键入键时播放音频。当键入键时,我想要在键入红色时高度选择键盘区域。但是这不起作用,我相信这是因为刷新率。我假设这是因为当我注释掉处理刷新的代码时它突出显示很好,但声音不能正常工作。 每次按下新键时,如何让键盘刷新并突出显示按下的键?
目前我正在使用,这只是代码的一部分。相关部分。
double KEYBOARD_REFRESH_DELAY = 0.01;
long start = Calendar.getInstance().get(Calendar.MILLISECOND);
if ((Calendar.getInstance().get(Calendar.MILLISECOND) % 1000) - start > KEYBOARD_REFRESH_DELAY) {
start = Calendar.getInstance().get(Calendar.MILLISECOND);
drawKeyboard(pressed);
StdDraw.show(0);
答案 0 :(得分:1)
使用System.currentTimeMillis()
代替Calendar.MILLISECOND
。请参阅下文,了解基于Java Docs的差异。
Calendar.MILLISECOND:
get和set的字段编号,表示其中的毫秒数 第二。例如,在10:04:15.250 PM,MILLISECOND是250。
System.currentTimeMillis:
以毫秒为单位返回当前时间。注意,虽然单位 返回值的时间是毫秒,粒度 值取决于底层操作系统,可能更大。 例如,许多操作系统以数十为单位测量时间 毫秒。有关讨论,请参阅类Date的说明 “计算机时间”和“计算机时间”之间可能出现的轻微差异 协调世界时(UTC)。
答案 1 :(得分:1)
Answer by codenut是正确的。
java.time.clock
Java 9及更高版本在Clock
的新实现中包含一个分辨率高达纳秒的选项。
Instant
通过调用Instant
进行访问,时间轴上的时刻始终为UTC。
Instant instant = Instant.now() ;
instant()。toString():2017-01-23T12:34:56.123456789Z