Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
滚动窗格Javafx中的平滑平移_Java_Javafx_Transformation_Scrollpane_Panning - Fatal编程技术网

滚动窗格Javafx中的平滑平移

滚动窗格Javafx中的平滑平移,java,javafx,transformation,scrollpane,panning,Java,Javafx,Transformation,Scrollpane,Panning,我有一个启用了pannable的滚动窗格。当用大图像平移时,变换“滞后”于鼠标,形成“块状”变换。有办法解决这个问题吗?如果你需要更多细节,这里没有太多真正相关的代码可以发布。我知道这是一篇老文章,但其他人可能需要这方面的帮助。我解决这个问题的方法是创建一个Transition对象,然后在interpolate函数下,根据您希望平移的速度,将滚动窗格的vValue或hValue设置为等于自身加上0.001。vValue和hValue是滚动窗格上的查看位置,因此基本上您只是在缓慢增加查看内容,因此

我有一个启用了pannable的滚动窗格。当用大图像平移时,变换“滞后”于鼠标,形成“块状”变换。有办法解决这个问题吗?如果你需要更多细节,这里没有太多真正相关的代码可以发布。

我知道这是一篇老文章,但其他人可能需要这方面的帮助。我解决这个问题的方法是创建一个
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();
}

包含一个代码片段来展示问题几乎总是好的。