这个
time
的参数
handle
中的方法
AnimationTimer
是
时间戳
以纳秒为单位给出的当前帧的。因此,您不应该设置
lastUpdate
并将其与所需的鼠标按住间隔进行比较。
您应该在参数中单击鼠标时记录时间戳
上次更新
以及
手柄
事件应检查当前时间和之间的差异
上次更新
查看是否大于鼠标按住间隔。
生成的代码如下所示:
public void isLongPressed() {
final AnimationTimer timer = new AnimationTimer() {
private long lastUpdate = 0;
@Override
public void handle(long time) {
if (Instant.now() - lastUpdate > 2000000000) {
result = true;
System.out.println("PRESSED !!!!!!!!!");
}
stop();
}
@Override
public void start() {
super.start();
lastUpdate = Instant.now();
}
};
button.addEventFilter(MouseEvent.ANY, new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent event) {
if (event.getEventType().equals(MouseEvent.MOUSE_PRESSED)) {
timer.start();
} else {
timer.stop();
}
}
});
}