【发布时间】:2016-09-03 21:57:19
【问题描述】:
我正在尝试学习如何使用 javafx 进行 3D 编程。我的目标是将光标锁定在中心或将其移动到中心以进行第一人称视图。
我创建了一个鼠标移动事件并将光标移动到屏幕中间,然后根据我将鼠标移动到的位置更改相机。问题在于,每当将光标移回中心时,事件就会再次触发,从而反转摄像机角度的变化。任何人都知道一种方法,因此当它将光标移回中心时不会影响相机角度?
scene.setOnMouseMoved(e -> {
int screenWidth = (int) Screen.getPrimary().getBounds().getWidth();
int screenHeight = (int) Screen.getPrimary().getBounds().getHeight();
moveCursor(screenWidth / 2, screenHeight / 2);
double dx = mouseX - e.getSceneX();
double dy = mouseY - e.getSceneY();
mouseX = e.getSceneX();
mouseY = e.getSceneY();
camAngleX += dx / 10;
camAngleY -= dy / 10;
});
这是添加布尔检查后... 我在其他地方定义了“ignoreMouseMove”。
scene.setOnMouseMoved(e -> {
if (ignoreMouseMove) {
ignoreMouseMove = false;
} else {
double cx = primaryStage.getX() + scene.getX() + sceneX / 2;
double cy = primaryStage.getY() + scene.getY() + sceneY / 2;
double dx = mouseX - e.getSceneX();
double dy = mouseY - e.getSceneY();
mouseX = e.getSceneX();
mouseY = e.getSceneY();
camAngleX += dx / 10;
camAngleY -= dy / 10;
ignoreMouseMove = true;
moveMouse(cx, cy);
}
}
【问题讨论】:
标签: javafx