저는 Java로 게임을 만들고 있는데, 플레이어의 움직임을 연구하고 있습니다. 그러나 방향키를 누를 때마다 플레이어는 움직이지만 키를 놓으면 멈추지 않습니다.키를 놓을 때 플레이어의 움직임을 멈 춥니 다.
내가 잘못하고있는 것을 볼 수없는 것처럼 보입니다. 누군가 올바른 방향으로 나를 가리킬 수 있습니까?
// 입력 클래스는이 당신에게서 충분한 정보를 원하시면 아닌 모든 KeyListener
public static final int LEFT = 0;
public static final int RIGHT = 1;
public static final int UP = 2;
public static final int DOWN = 3;
public boolean[] keys = new boolean[64];
public void getKeys(KeyEvent e, boolean move) {
switch(e.getKeyCode()) {
case KeyEvent.VK_LEFT:
keys[LEFT] = move;
break;
case KeyEvent.VK_RIGHT:
keys[RIGHT] = move;
break;
case KeyEvent.VK_UP:
keys[UP] = move;
break;
case KeyEvent.VK_DOWN:
keys[DOWN] = move;
break;
case KeyEvent.VK_BACK_QUOTE:
keys[BQUOTE] = move;
break;
}
keys[OTHER] = move;
}
@Override
public void keyPressed(KeyEvent e) {
getKeys(e, true);
}
@Override
public void keyReleased(KeyEvent e) {
getKeys(e, false);
}
@Override
public void keyTyped(KeyEvent e) {
// TODO Auto-generated method stub
}
// 플레이어 클래스
public void tick() {
if (Engine.key_input.keys[KInput.LEFT]) {
dx = -speed;
animDir = SpriteLoader.L;
sprite = SpriteLoader.anim(SpriteLoader.ANIM_PLAYER, animDir);
}
if (Engine.key_input.keys[KInput.RIGHT]){
dx = speed;
animDir = SpriteLoader.R;
sprite = SpriteLoader.anim(SpriteLoader.ANIM_PLAYER, animDir);
}
if (Engine.key_input.keys[KInput.UP]){
dy = -speed;
animDir = SpriteLoader.U;
sprite = SpriteLoader.anim(SpriteLoader.ANIM_PLAYER, animDir);
}
if (Engine.key_input.keys[KInput.DOWN]){
dy = speed;
animDir = SpriteLoader.D;
sprite = SpriteLoader.anim(SpriteLoader.ANIM_PLAYER, animDir);
}
}
// 엔진 클래스를
public class Engine {
public Input key_input;
public Engine() {
key_input = new Input();
}
// add keyListener(Input) to component
}
디버거를 단계별로 실행하고 무슨 일이 일어나는지 확인하십시오. – mwerschy
어떤 클래스가'keys','getKeys()','keyPressed()'를 포함합니까? 그리고'getKeys()'를 대신'setKeys()'라고해야합니까? –