먼저, 코드 하단에 자세한 설명을 게시합니다.부울을 편집/업데이트하려고 시도했지만 무언가가 작동하지 않습니다.
여기는 첫 번째 클래스 인 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) {
}
}
우리가 가지고 있습니다. 문제는 Keyboard 클래스에 있습니다. 내가하는 일과 상관없이 키에 따라 부울을 업데이트 할 수 없습니다.
는합니다 (Player.update()
방법은 컴퓨터가 할 수있는 한, 그 업데이트되는에 오류 아니라 자주이라고합니다.)
내가 필요한 것을 명확히 알 수있을 것입니다.
감사합니다.
keyPressed/release 메소드에서 인쇄 호출을 시도하여 호출이 제대로 수행되는지 확인하십시오. 또한 플레이어 필드를 inividually 대신에 ['Rectangle'] (http://docs.oracle.com/javase/8/docs/api/java/awt/Rectangle.html)에 저장하는 것을 고려하십시오 – vandale
다른 코드에서는 표시되지 않습니다. 키보드 클래스를 일부 컨트롤 (예 : somecontrol.addKeyListener (input))에 등록하고 있습니까? 키보드를 들으려면 무엇을해야할지 모르기 때문에 그렇게해야합니다. –
귀하의 Keyboard 클래스는 KeyListener를 구현하지만 실제로 그것을 추가하고 있습니까? 여기 게시 한 코드 어디에서나 그렇게하는 것은 아닙니다. – Carmeister