我发现如果我在触摸设备上的JavaFX应用程序中的ScrollPane中滑动,则滚动动画非常慢。我不会在ScrollPane的ScrollBar上滑动,但在内容本身内。
如何加快滑动动画?
答案 0 :(得分:1)
这是触控设备和ScrollPane的已知问题;) 如果你想加速动画,你必须自己设置位置。 我通过这种方式解决了同样的问题,效果很好。 你需要做这样的事情:
ScrollPane scrollPane = new ScrollPane();
final IntegerProperty vValueProperty = new SimpleIntegerProperty(0);
final int steps = 5;
scrollPane.vvalueProperty().bind(vValueProperty);
scrollPane.setOnSwipeDown(new EventHandler<GestureEvent>() {
public void handle(GestureEvent event) {
// calculate the needed value here
vValueProperty.set(vValueProperty.get() + steps);
}
});
如果正常的滑动动画会干扰您,只需使用
杀死该事件即可event.consume();
但是在这种情况下你可能需要使用EventFilter,因为在Event执行任何操作之前调用了EventFilter。不记得EventHandler末尾的consume()是否足够。如果不是,你需要使用这样的东西:
scrollPane.addEventFilter(SwipeEvent.SWIPE_DOWN,
new EventHandler<SwipeEvent>() {
public void handle(SwipeEvent event) {
vValueProperty.set(vValueProperty.get() - steps);
event.consume();
}
});
这只是为了加速动画。如果你想要你的手指跟随你的Pane,只需保存第一个值,你得到OnTouchDetected并计算Offset OnTouchMoved。这是您可以用来正确翻译窗格的价值。 :) 希望它有用。我这里没有触控设备来测试它。