Как справиться с одновременным нажатием и отпусканием клавиши? - PullRequest
0 голосов
/ 26 января 2019

Я написал небольшую программу, в которой движется камера. Когда я одновременно нажимаю и отпускаю навигационные клавиши вправо и влево, камера на секунду замедляется, и только после этого она начинает двигаться в направлении нажатой клавиши. Как избежать такого торможения?

public class ControlCameraV2 {
PerspectiveCamera ourcamera;
int accelerationX = 0;
int accelerationY = 0;
int speedX = 0;
int speedY = 0;
int frictionForceX = 0;
int frictionForceY = 0;
public ControlCameraV2(PerspectiveCamera camera){ourcamera = camera;}
public void speedX(int acceleration){ accelerationX = acceleration;}
public void speedY(int acceleration){accelerationY = acceleration;}
public void brakingX(){accelerationX = 0;}
public void brakingY(){accelerationY = 0;}
public void Demonstration(){
    if(speedX > 0) frictionForceX = -1;
    if(speedX < 0) frictionForceX = 1;
    if (speedY > 0) frictionForceY = -1;
    if (speedY < 0) frictionForceY = 1;
    if (speedY == 0) frictionForceY = 0;
    if(speedX < 14 && speedX > -14){speedX = speedX + accelerationX;}
    if(speedY < 14 && speedY > -14){speedY = speedY + accelerationY;}
    speedX = speedX + frictionForceX;
    speedY = speedY + frictionForceY;
    if (speedX == 0) frictionForceX = 0;
    if (speedY == 0) frictionForceY = 0;
    ourcamera.setTranslateZ(ourcamera.getTranslateZ()+speedY);
    ourcamera.setTranslateX(ourcamera.getTranslateX()+speedX);
}

}

ourscene.setOnKeyReleased(e -> {
        if(e.getCode() == KeyCode.UP || e.getCode() == KeyCode.DOWN){ ourcontrol.brakingY(); codes.remove(KeyCode.UP); codes.remove(KeyCode.DOWN);}
        if(e.getCode() == KeyCode.RIGHT || e.getCode() == KeyCode.LEFT){ ourcontrol.brakingX();codes.remove(KeyCode.RIGHT);codes.remove(KeyCode.LEFT);}
        });

    ourscene.setOnKeyPressed(e -> {
        if(acceptedKey.contains(e.getCode()))
        {
            codes.add(e.getCode());
            if(codes.contains(KeyCode.UP))
            {
                ourcontrol.speedY(2);
            }
            if(codes.contains(KeyCode.DOWN))
            {
                ourcontrol.speedY(-2);
            }
            if(codes.contains(KeyCode.RIGHT))
            {
                ourcontrol.speedX(2);
            }
            if(codes.contains(KeyCode.LEFT))
            {
                ourcontrol.speedX(-2);
            }
        }
    });

Это ссылка на хранилище. Есть три файла. 2 файла с кодом и текстурой для объекта. Bump

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...