gpt4 book ai didi

java - 每当鼠标在场景上移动时如何使节点移动(在 JavaFX 中)?

转载 作者:行者123 更新时间:2023-11-29 03:26:29 25 4
gpt4 key购买 nike

我编写了一个小型 JavaFX 程序,其中只要鼠标光标在包含矩形的场景上移动,矩形节点就会移动。这是我的代码:

public class MovedObjectWhenMouseMoved extends Application{
double nodeX;
double currentMousePos;
double oldMousePos = 0.0;
public static void main(String[] arg){
launch(arg);
}

@Override
public void start(Stage stage) throws Exception {
final Rectangle rect = new Rectangle(50, 50, Color.RED);
rect.setX(20);
rect.setY(20);

AnchorPane anchorPane = new AnchorPane();
anchorPane.getChildren().add(rect);
Scene scene = new Scene(anchorPane,500,500,Color.GREEN);
stage.setScene(scene);
stage.show();

scene.setOnMouseMoved(new EventHandler<MouseEvent>() {

@Override
public void handle(MouseEvent mouseEvent) {

currentMousePos = mouseEvent.getX();

if(currentMousePos>oldMousePos){
rect.setX(rect.getX()+1); // Move right
}else if(currentMousePos<oldMousePos){
rect.setX(rect.getX()-1); // Move Left
}

oldMousePos = currentMousePos;
}

});
}
}

但这里的问题是节点速度与鼠标速度不同。我该如何解决这个问题?如果有更好的方法,也请告诉我。

最佳答案

鼠标可以改变超过 1 个像素的位置。

handle 尝试此代码:

currentMousePos = mouseEvent.getX();
double dX = currentMousePosition - oldMousePos;
rect.setX(rect.getX() + dX);
oldMousePos = currentMousePos;

关于java - 每当鼠标在场景上移动时如何使节点移动(在 JavaFX 中)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20758153/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com