这是我第一次尝试在 Java 中使用 keylistener,所以不要对我太苛刻。我试图在同一个单独的私有(private)类中使用 TimerListener 和 KeyListener 来补充我上层类的主要 Activity 。
public class GameMemory {
private int[][] grid = new int[24][12];
Figure figure = new Figure();
GameMemory() {
figure.figureReinitialize();
Timer timer = new Timer(1000, new TimerListener());
timer.start();
}
还有私有(private)类(class)
private class TimerListener implements ActionListener, KeyListener {
@Override
public void actionPerformed(ActionEvent e) {
figure.moveDown();
System.out.println(Arrays.deepToString(grid)); // To debug.
}
@Override
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_RIGHT)
GameMemory.this.figure.rotateRight();
}
@Override
public void keyReleased(KeyEvent e) {
}
@Override
public void keyTyped(KeyEvent e) {
}
}
我做了广泛的研究,观看了几个在线视频并阅读了有关该主题的 Oracle 文档,但仍然无法从中获得太多意义。在当前状态下,代码编译,计时器按预期运行,但我认为我在某处缺少一条语句...
我在 GameMemory 构造函数中尝试了 addKeyListener,但它说找不到符号。
有什么想法吗?
如果计时器被调用但键没有被调用,那么很可能您还没有将监听器添加为 KeyListener。这与代码中发生的情况非常相似,因为您在代码上放置了一个计时器,但随后不对其执行任何其他操作。
总的来说,无论如何将它们分开是更好的做法。每个Java类都应该尝试并专注于做一件事并把它做好。
我是一名优秀的程序员,十分优秀!