在同一类中具有timerlistener的Keylistener



这是我第一次尝试在Java中使用keylistener,所以不要对我苛刻。我正在尝试在同一个单独的私有类中使用TimerListener和keylistener来补充上层类中的主要活动。

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 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类都应该尝试并专注于做一件事并把它做好。

相关内容

  • 没有找到相关文章

最新更新