我正在尝试旋转旋转旧的收音机旋钮,而旋转是我的问题。当鼠标光标位于旋钮上时,一切正常,但是,当鼠标离开旋钮区域时,一切工作均不正常。这是我的旋钮代码。
编辑:我只想通过左右移动旋钮即可。上下移动对我不感兴趣。
EDIT2:仅在旋钮区域不会发生此问题。我认为这取决于
光标移动距离。
@FXML
void onFrequencyKnobMouseMove(MouseEvent mouseEvent) {
double vX = (mouseEvent.getX() - deltaX);
System.out.println("VX: " + vX);
double rotation = frequencyKnob.getRotate() + vX;
if(rotation > 180) rotation=180;
if(rotation < -180) rotation=-180;
frequencyKnob.setRotate(rotation);
System.out.println("ROTATION: " + rotation);
tuningLine.setLayoutX(rotation*1.33+250);
deltaX = mouseEvent.getX();
System.out.println("DELTAX: " + deltaX + "\n\n");
}
@FXML
void onFrequencyKnobMouseDown(MouseEvent mouseEvent) {
deltaX = mouseEvent.getX();
//System.out.println(deltaX);
}
FXML文件
<ImageView fx:id="frequencyKnob" layoutX="856.0" layoutY="29.0" onMouseDragged="#onFrequencyKnobMouseMove" onMousePressed="#onFrequencyKnobMouseDown">
<image>
<Image url="@knob.png" />
</image>
</ImageView>
答案 0 :(得分:2)
您将MouseEvent
的处理程序添加到ImageView
中。通过此事件对象可用的坐标位于旋转的ImageView
的坐标系中。您应该在未修改的坐标系中使用坐标。最简单的方法是使用sceneX
属性而不是x
的{{1}}属性,或者转换为父级的坐标系。
MouseEvent