试图编辑/更新布尔值,某些东西不起作用

时间:2014-07-14 03:07:37

标签: java keyboard boolean

首先,我将发布我的代码 - 底部有更多解释。

这是第一堂课,Player

package main;
import main.Screen;
import main.Keyboard;

public class Player extends Mob {

    private Keyboard input = new Keyboard();

    private int color = 0x0066CC;
    private int xPos = 50;
    private int yPos = 50;
    private int xSize = 10;
    private int ySize = 10;

    public Player() {

    }

    public void render(Screen screen) {
        screen.addSquare(xPos, yPos, xSize, ySize, color);
        return;
    }

    public void update() {
        this.input.update();
        if (input.up == true) { 
            xPos = xPos + 1;
        }
        System.out.println("xPos is " + xPos);
    }   
}

这是第二节课,Keyboard

package main;

import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

public class Keyboard implements KeyListener {

    private boolean[] keys = new boolean[120];

    public boolean up, down, left, right;

    public  void update() {
        System.out.println("Reached 3");
        up = keys[KeyEvent.VK_UP] || keys[KeyEvent.VK_W];
        down = keys[KeyEvent.VK_DOWN] || keys[KeyEvent.VK_S];
        left = keys[KeyEvent.VK_LEFT] || keys[KeyEvent.VK_A];
        right = keys[KeyEvent.VK_RIGHT] || keys[KeyEvent.VK_D];

        System.out.println("up " + up + ", down " + down + ", left " + left + ", right " + right);
    }

    public void keyPressed(KeyEvent e) {
        keys[e.getKeyCode()] = true;
    }

    public void keyReleased(KeyEvent e) {
        keys[e.getKeyCode()] = false;
    }

    public void keyTyped(KeyEvent e) {

    }
}

我们有它。问题在于键盘类 - 无论我做什么,它都无法根据键更新布尔值。

Player.update()方法的调用频率与计算机一样频繁,更新时不会出错。)

我很乐意澄清所需的一切。

谢谢!

1 个答案:

答案 0 :(得分:0)

boolean值未被更改,因为KeyListener类中未注册Player

如果您查看KeyEvent API,您会找到关于重要事件的以下说明:

  

此低级事件由组件对象(例如   按下,释放或键入键时的文本字段。活动是   传递给注册的每个KeyListener或KeyAdapter对象   使用组件的addKeyListener方法接收此类事件。   (KeyAdapter对象实现了KeyListener接口。)每个都是这样   侦听器对象在事件发生时获取此KeyEvent。

基本上它声明为了发生这些关键事件,你需要使用KeyListener or KeyAdapter`注册它们。

在这个link中,你会发现这些事件的很好用法。

相关问题