【发布时间】:2015-08-20 10:32:14
【问题描述】:
我正在编写一个简单的游戏,基本上有两个人控制精灵和战斗。我用一个关键监听器编写了这个程序,但这只允许我在任何给定时间控制一个精灵。我愿意在KeyListener 旁边使用不同的键盘输入方法,尽管我更愿意坚持使用我的KeyListener。我听说过KeyBindings,但我真的不知道如何使用它们。我的一个想法是多线程,但我对这个概念不太满意。这是我的代码:(请举例说明我的代码应该是什么。另外,第二个精灵由一个单独的类控制,该类几乎与这个相同,但使用不同的键。)
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.util.ArrayList;
import java.awt.*;
import javax.swing.*;
public class KeyHandler implements KeyListener {
@Override
public void keyTyped(KeyEvent e) {
// TODO Auto-generated method stub
}
@Override
public void keyPressed(KeyEvent e) {
int key = e.getKeyCode();
if (key == KeyEvent.VK_UP) {
Display.up = Display.up + 7;
}
if (key == KeyEvent.VK_DOWN) {
Display.down = Display.down + 7;
}
if (key == KeyEvent.VK_RIGHT) {
Display.right = Display.right + 7;
}
if (key == KeyEvent.VK_LEFT) {
Display.left = Display.left + 7;
}
if (key == KeyEvent.VK_SPACE) {
Display.fireMissile();
Display.whichSpriteInt = 0;
}
}
@Override
public void keyReleased(KeyEvent e) {
}
}
【问题讨论】:
-
您需要“轮询”键。看看这个article。
-
@LuxxMiner ya KeyBinding 的问题是我的代码格式。目前它不控制一个对象,它只是绘制一个缓冲的图像,然后用键输入改变坐标。 (我有一个计时器正在运行,它每 10 毫秒重绘一次)我想我可以更改格式,但它需要大量的代码修改,我宁愿避免它。
标签: java swing keyboard keylistener java-2d