使用Java中的箭头键移动图像

时间:2016-03-18 14:26:33

标签: java user-interface keyevent toolkit

我正在用java编写一个小游戏,一个明显的关键组件是能够用箭头键移动角色。但是我无法使所有方向都能正常工作,并且只有最后两个if语句的实际激活。

public void Update(){
    if(Canvas.keyboardKeyState(KeyEvent.VK_UP))
        yVel = -1;
    else
        yVel = 0;

    if(Canvas.keyboardKeyState(KeyEvent.VK_LEFT))
        xVel = -1;
    else
        xVel = 0;

    if(Canvas.keyboardKeyState(KeyEvent.VK_DOWN))
        yVel = 1;
    else
        yVel = 0;

    if(Canvas.keyboardKeyState(KeyEvent.VK_RIGHT))
        xVel = 1;
    else
        xVel = 0;

    x += xVel;
    y += yVel;
}

我的输入很好,所有键都在注册,但没有数学正在进行。如果有人有建议或图书馆/包装可以让这更容易,请告诉我。

2 个答案:

答案 0 :(得分:1)

您覆盖else块中的值。你可能想要这样做。

public void Update(){

    xVel = 0;
    yVel = 0;

    if(Canvas.keyboardKeyState(KeyEvent.VK_UP)) {
        yVel -= 1;
    }

    if(Canvas.keyboardKeyState(KeyEvent.VK_LEFT)) {
        xVel -= 1;
    }

    if(Canvas.keyboardKeyState(KeyEvent.VK_DOWN)) {
        yVel += 1;
    }

    if(Canvas.keyboardKeyState(KeyEvent.VK_RIGHT)) {
        xVel += 1;
    }

    x += xVel;
    y += yVel;
}

答案 1 :(得分:0)

非常明显。每次循环执行时都会发生类似这样的事情:

如果它执行第一个if语句,它还会执行else statements的其余部分。

它应该是这样的:

xVal = 0;
yVal = 0;
if(keyDown){
    yVal++;
}
else if(keyUp){
    yVal--;
}
else if(keyLeft){
    xVal--;
}
else{
    xVal++;
}
//Your rest of the code.