有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java中带有箭头键的用户界面移动图像

我正在用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) 个答案

  1. # 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;
    }
    
  2. # 2 楼答案

    这很明显。每次执行循环时,都会发生如下情况:

    如果它执行第一个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.