如何在窗口中的某个光标位置移动图形对象?

时间:2018-11-29 02:17:46

标签: java javafx

Visual addition

我读到,创建窗口时,启动了运行所有事件的主循环。由此得出结论,不可能形成一个循环来改变窗口中图形对象的位置。这是不准确的,但是以某种方式起作用。我以一种抽象的方式理解了这一切。: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);
        }

除了图片,我还编写了这段代码。随着鼠标的移动,一切都会正常进行。但是,只要鼠标位于窗户的一角,我就希望实现房屋的移动。请告诉我该怎么做?对不起,我的英语。

1 个答案:

答案 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();