微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

JavaFX PerspectiveCamera:相机影响鼠标位置

如何解决JavaFX PerspectiveCamera:相机影响鼠标位置

我有一些代码,其中有一个带有 PerspectiveCamera 的 SubScene。 我想要几个 EventHandler,它们在 SubScene 上使用 MousePosition。

然而,相机似乎对注册的位置有影响。 Cameras TranslateZ 属性越大,失真越严重。

例如,如果我想拖动场景,第一次拖动会使它跳得很远。

我的相机:

private void setCamera(){
        camera = new PerspectiveCamera(true);
        camera.setNearClip(0.1);
        camera.setFarClip(10000.0);
        camera.setTranslateX(300);
        camera.setTranslateY(350); 
        camera.setTranslateZ(-3000);
        camera.setRotationAxis(Rotate.X_AXIS);
        camera.setRotate(25);
        camera.setFieldOfView(40);
    }

这是我创建子场景的地方:

private SubScene createMapSubScene(StackPane wrapper){
    double stageWidth = stage.getWidth();
    double stageHeight = stage.getHeight();
    double menuBarHeight = vMenuBar.getHeight();
    mapSubScene = new SubScene(wrapper,stageWidth,stageHeight-menuBarHeight);
    mapSubScene.setCamera(this.getCamera());

    return mapSubScene;
}

这是控制器部分:

game.getMapPane().setonDragDetected(drag ->{
    System.out.println("DragDetectet");
    game.getMapPane().setonmousepressed(event -> {
        //Position,an der drag-event gestartet wurde
        panesourceX = event.getX();
        panesourceY = event.getY();
        event.consume();
    });

    game.getMapPane().setonMouseDragged(event ->{
        //Position,an die Maus hingedragged wurde
        double paneTargetX = event.getX();
        double paneTargetY = event.getY();
        game.getMapSubScene().setTranslateX(paneTargetX-panesourceX);
        game.getMapSubScene().setTranslateY(paneTargetY-panesourceY);
        event.consume();
    });
}   );

有没有办法让这个工作,或者拖放或其他鼠标控制的操作根本不是 PerspectivCamera 的选项? (我也试过使用子场景节点,没什么区别)

希望得到答复! 提前致谢。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。