问题描述
我有一些代码,其中有一个带有 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 (将#修改为@)