我读到,创建窗口时,启动了运行所有事件的主循环。由此得出结论,不可能形成一个循环来改变窗口中图形对象的位置。这是不准确的,但是以某种方式起作用。我以一种抽象的方式理解了这一切。:DDDDD
scene.setOnMouseMoved(e -> {
System.out.println(e.getX()+" "+e.getY());
if(e.getX()>750)
{
camera.cameraControlX(-0.5);
}else if(e.getX()<50)
{
camera.cameraControlX(0.5);
}
if(e.getY()>550)
{
camera.cameraControlY(-0.5);
}else if(e.getY()<50)
{
camera.cameraControlY(0.5);
}
除了图片,我还编写了这段代码。随着鼠标的移动,一切都会正常进行。但是,只要鼠标位于窗户的一角,我就希望实现房屋的移动。请告诉我该怎么做?对不起,我的英语。
答案 0 :(得分:0)
如果我正确理解了您的问题,我认为只要光标位于一个位置,您就希望摄像机继续移动。我添加了一个AnimationTimer,只要光标保持在一个位置,它就可以继续移动相机。这是我的代码
boolean north = false, east = false, south = false, west = false;
scene.setOnMouseMoved(e -> {
if(e.getX()>750)
{
east = true;
}else if(e.getX()<50)
{
west = true;
}else{
east = false;
west = false;
}
if(e.getY()>550)
{
south = true;
}else if(e.getY()<50)
{
north = true;
}else{
north = false;
south = false;
}
});
AnimationTimer timer = new AnimationTimer() {
@Override
public void handle(long now) {
if(east)camera.cameraControlX(-0.5);
if(west)camera.cameraControlX(0.5);
if(south)camera.cameraControlY(-0.5);
if(north)camera.cameraControlY(0.5);
}
};
timer.start();