滚动窗格Javafx中的平滑平移
我有一个启用了pannable的滚动窗格。当用大图像平移时,变换“滞后”于鼠标,形成“块状”变换。有办法解决这个问题吗?如果你需要更多细节,这里没有太多真正相关的代码可以发布。我知道这是一篇老文章,但其他人可能需要这方面的帮助。我解决这个问题的方法是创建一个滚动窗格Javafx中的平滑平移,java,javafx,transformation,scrollpane,panning,Java,Javafx,Transformation,Scrollpane,Panning,我有一个启用了pannable的滚动窗格。当用大图像平移时,变换“滞后”于鼠标,形成“块状”变换。有办法解决这个问题吗?如果你需要更多细节,这里没有太多真正相关的代码可以发布。我知道这是一篇老文章,但其他人可能需要这方面的帮助。我解决这个问题的方法是创建一个Transition对象,然后在interpolate函数下,根据您希望平移的速度,将滚动窗格的vValue或hValue设置为等于自身加上0.001。vValue和hValue是滚动窗格上的查看位置,因此基本上您只是在缓慢增加查看内容,因此
Transition
对象,然后在interpolate函数下,根据您希望平移的速度,将滚动窗格的vValue或hValue设置为等于自身加上0.001。vValue和hValue是滚动窗格上的查看位置,因此基本上您只是在缓慢增加查看内容,因此它看起来像是平移,但实际上不是。下面是我正在进行的一个项目中的一个示例,您可以使用KeyEvents向下或向上平移
@FXML
ScrollPane scroll;
private Transition down;
private Transition up;
public void initialize(){
this.down = new Transition() {
{
setCycleDuration(Duration.INDEFINITE);
}
@Override
protected void interpolate(double v) {
scroll.setVvalue(scroll.getVvalue()+0.001);
}
};
this.up = new Transition() {
{
setCycleDuration(Duration.INDEFINITE);
}
@Override
protected void interpolate(double v) {
scroll.setVvalue(scroll.getVvalue()-0.001);
}
};
}
@FXML
private void handleKeyPress(KeyEvent event){
if(event.getCode() == KeyCode.S){
down.play();
}
if(event.getCode() == KeyCode.W){
up.play();
}
}
@FXML
private void handleKeyRelease(){
this.down.stop();
this.up.stop();
}
包含一个代码片段来展示问题几乎总是好的。