java - 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。
解决方案
推荐阅读
- rust - 是否有一个宏可以用来期待枚举的变体并提取其数据?
- twig - PHP 可恢复的致命错误:方法 Timber\PostType::__toString() 必须返回字符串值
- python - python请求可能出现死锁
- flutter - Flutter-如何使用谷歌地图沿折线移动标记
- excel - Office 365 中的 VBA 用户定义函数
- javascript - 发送所选选项的简单下拉列表
- excel - 如何在vba中使用变量写入范围
- plotly-dash - 数据上传在 Dash 上的选项卡之间传输
- c - C 处理大字符串而不会使 2KB 的 RAM 过载(微控制器 ATMEGA328P)
- arduino - Blynk 没有打开 NodeMCU 上的 LED