gpt4 book ai didi

Java keyPressed() 方法仅在玩家按下 Tab 后才起作用

转载 作者:行者123 更新时间:2023-12-01 12:45:50 25 4
gpt4 key购买 nike

我正在制作一个小游戏小程序,并且我已经到达了玩家应该使用控件移动的位置。

主要:

public class Main extends JApplet implements Runnable, KeyListener {
private static final long serialVersionUID = 1L;
private static DoubleBufferedCanvas canvas = new DoubleBufferedCanvas();
public static int width = 900;
public static int height = 600;
public static int fps = 60;

public static Ailoid ailoid = new Ailoid();
public static Player player = new Player();

// Initialize
public void init() {
setSize(width, height);
setBackground(Color.white);
add(canvas);
addKeyListener(this);
setFocusable(true);
setFocusTraversalKeysEnabled(false);

ailoid.setLocation(new Location(100, 100));
AlienManager.registerAlien(ailoid);
player.setLocation(new Location(400, 400));
}

// Paint graphics
public void paint(Graphics g) {
super.paint(g);
}

// Thread start
@Override
public void start() {
Thread thread = new Thread(this);
thread.start();
}
// Thread stop
@Override
public void destroy() {

}

// Thread run
@Override
public void run() {
Thread thread = new Thread(this);
while (thread != null) {
Updater.run();
canvas.repaint();
try {
// 1000 divided by fps to get frames per second
Thread.sleep(1000 / fps);
}
catch (InterruptedException e) {
e.printStackTrace();
}
}
}

@Override
public void keyPressed(KeyEvent evt) {
KeyPress.run(evt);
System.out.println("DEBUG");
}

@Override
public void keyReleased(KeyEvent evt) {

}

@Override
public void keyTyped(KeyEvent evt) {

}
}

发生的情况是,在我按 Tab 键后它才开始显示“调试”。即使玩家之前没有按 Tab 键,我该如何让它工作?

最佳答案

您的小程序很可能没有输入焦点。尝试添加

this.requestFocus ()

到你的初始化方法。

另请注意,JApplet 是 Swing 框架的一部分,因此不是 documentation 中提到的线程安全的。

关于Java keyPressed() 方法仅在玩家按下 Tab 后才起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24716245/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com