java试图编辑/更新布尔值,但某些内容不起作用
首先,我会发布我的代码——在底部有更多的解释
这是第一节课
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 楼答案
没有更改
boolean
值,因为KeyListener
未在Player
类中注册如果你看一下KeyEvent API,你会发现以下关于关键事件的解释:
基本上,它说明为了让这些关键事件发生,您确实需要使用
KeyListener or
KeyAdapter`注册它们在本link中,您将发现这些事件的良好用法