首页 > 解决方案 > Java中的键输入故障

问题描述

所以我按照本教程在我的 Java 程序中获取键输入,但是当我执行程序并按下键时,播放器对象在完全消失之前几秒钟没有响应。Eclipse 告诉我 public void keyPressed(key event e) 和 public void keyReleased(KeyEvent e) 会覆盖它们自己,但除此之外,IDE 什么也没告诉我。

这是 KeyInput 类的代码:

import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;

public class KeyInput extends KeyAdapter {

private Handler handler;

public KeyInput(Handler handler) {
    this.handler = handler;
}

public void keyPressed(KeyEvent e) {
    int key = e.getKeyCode();
    
    for(int i = 0; i < handler.object.size(); i++) {
        GameObject tempObject = handler.object.get(i);
        
        if(tempObject.getId() == ID.Player) {
            
            if(key == KeyEvent.VK_W) tempObject.setyvel(-5);
            if(key == KeyEvent.VK_S) tempObject.setyvel(5);
            if(key == KeyEvent.VK_A) tempObject.setxvel(-5);
            if(key == KeyEvent.VK_D) tempObject.setxvel(5);
        }
    }
}

public void keyReleased(KeyEvent e) {
    int key = e.getKeyCode();
    
    for(int i = 0; i < handler.object.size(); i++) {
        GameObject tempObject = handler.object.get(i);
        
        if(tempObject.getId() == ID.Player) {
            
            if(key == KeyEvent.VK_W) tempObject.setyvel(0);
            if(key == KeyEvent.VK_S) tempObject.setyvel(0);
            if(key == KeyEvent.VK_A) tempObject.setxvel(0);
            if(key == KeyEvent.VK_D) tempObject.setxvel(0);
            
        }
    }

}

}

我在主类中放置了一个处理程序和一个 KeyListener 的实例。我还在我的 GameObject 类中设置了 x、y、getX、getY、setX、setY、setxvel、setyvel、setId 和 getId。我在我的 Player 类中加入了 x += xvel 和 y += yvel。

标签: java

解决方案


推荐阅读