Как переместить графический объект в окне на определенную позицию курсора? - PullRequest
0 голосов
/ 29 ноября 2018

Визуальное добавление

Я прочитал, что при создании окна запускается главный цикл, который запускает все события.Из этого следует, что невозможно сделать цикл для изменения положения графических объектов в окне.Это не точно, но как-то работает.Абстрактным образом я все понял. 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 голосов
/ 29 ноября 2018

Если я правильно понимаю вашу проблему, я думаю, вы хотите, чтобы камера продолжала двигаться, пока курсор находится в одном положении.Я добавил 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();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...