[英]KeyListener is unresponsive 1st time used?
我查看了这些链接,没有任何帮助。 我使用KeyListener和Runnalbe使用JFrame制作游戏。 在过去制作的游戏中,我从未遇到过任何问题,但是现在我正在谈论的是:
这是我的构造函数:
public Game()
{
super("ZMan");
addKeyListener(this);
setSize(800,600);
setVisible(true);
i = createImage(800,600);
b = i.getGraphics();
makeLevel();
souls = new Image[3];
particles = new double[20][3];
pc = 10;
pH = 20;
player = new Image[8];
nme = new Image[8];
showMessage = false;
try
{
bg = ImageIO.read(new File("bg.png"));
abg = ImageIO.read(new File("abg.png"));
bil = ImageIO.read(new File("buildingP.png"));
bilP = ImageIO.read(new File("building.png"));
message = ImageIO.read(new File("./system/messageBG.png"));
souls[2] = ImageIO.read(new File("sR.png"));
souls[1] = ImageIO.read(new File("sG.png"));
souls[0] = ImageIO.read(new File("sB.png"));
rem = souls[0];
//player
player[0] = ImageIO.read(new File("./player/normal.png"));
player[1] = ImageIO.read(new File("./player/pBloop.png"));
player[2] = ImageIO.read(new File("./player/pscorp.png"));
player[3] = ImageIO.read(new File("./player/pSqui.png"));
player[4] = ImageIO.read(new File("./player/pCato.png"));
player[5] = ImageIO.read(new File("./player/pChubs.png"));
player[6] = ImageIO.read(new File("./player/pPluckers.png"));
player[7] = ImageIO.read(new File("./player/pSpooky.png"));
gate = ImageIO.read(new File("./gate.png"));
levelUp = ImageIO.read(new File("./system/levelUp.png"));
xL = ImageIO.read(new File("./player/x.png"));
/*
nme[0] = ImageIO.read(new File("./enemies/bloop.png"));
nme[1] = ImageIO.read(new File("./enemies/bloop.png"));
nme[2] = ImageIO.read(new File("./enemies/scorp.png"));
nme[3] = ImageIO.read(new File("./enemies/squi.png"));
nme[4] = ImageIO.read(new File("./enemies/cato.png"));
*/
nme[0] = Toolkit.getDefaultToolkit().createImage("./enemies/bloob.png");
nme[1] = Toolkit.getDefaultToolkit().createImage("./enemies/bloob.png");
nme[2] = Toolkit.getDefaultToolkit().createImage("./enemies/scorp.png");
nme[3] = Toolkit.getDefaultToolkit().createImage("./enemies/squi.png");
nme[4] = Toolkit.getDefaultToolkit().createImage("./enemies/cato.png");
nme[5] = Toolkit.getDefaultToolkit().createImage("./enemies/chubs.png");
nme[6] = Toolkit.getDefaultToolkit().createImage("./enemies/pluckers.png");
nme[7] = Toolkit.getDefaultToolkit().createImage("./enemies/spooky.png");
}
catch(Exception e){e.printStackTrace();}
powerT = new String[8];
powerT[0] = "You went back to normal";
powerT[1] = "You are now Bloop!";
powerT[2] = "You are now Scorp!";
powerT[3] = "You are now Squi!";
powerT[4] = "You are now Cato!";
powerT[5] = "You are now Chubs!";
powerT[6] = "You are now Pluckers";
powerT[7] = "You are now Spooky";
startAim();
//music = new Music("./system/music/0.wav");
t.start();
}
没有人知道这个问题吗?
“要触发键盘事件,组件必须具有键盘焦点。” — 如何编写按键监听器 。 我想第二次关注的是相关组件。 您可以尝试requestFocusInWindow()
或者最好看看如何使用键绑定 。
附录:有一个键绑定例子在这里 。
这听起来可能很愚蠢,但这更像是一项健全性检查。 检查您的主要方法。 我建议进行调试,确保第一次启动窗口时,Game的构造函数实际上被调用了……关于构造函数的一切对我而言似乎都不是一件坏事,这使我认为实例化的物体可能被胶管了。
如果不是那样,我无能为力。 您将不得不等待更聪明的人来回答您的问题:)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.