2

我刚刚完成了有关制作网络游戏的在线教程。游戏本身只是在屏幕上跟随鼠标的一个小圆圈。

我一直在修改代码以使用键而不是鼠标来移动圆圈。然而,虽然我在从未使用过“JPanel”之前已经这样做过,但我正在努力获得移动圆圈的钥匙。

游戏的“客户端”端仅包含两个文件,Client.java 和 DataPackage.java,问题(据我所知)似乎在 Client.java 中。

我不会粘贴整个代码,因为它很大(如果你认为有必要,我会粘贴),但这是让球跟随鼠标的一点

public Client()
    {
        this.addMouseMotionListener(new MouseMotionListener()
        {

            @Override
            public void mouseDragged(MouseEvent e)
            {
                x = e.getX();
                y = e.getY();
            }

            @Override
            public void mouseMoved(MouseEvent e) {}

        });
}

现在我试着改变

this.addMouseMotionListener(new MouseMotionListener()
            {

                @Override
                public void mouseDragged(MouseEvent e)
                {
                    x = e.getX();
                    y = e.getY();
                }

                @Override
                public void mouseMoved(MouseEvent e) {}

            });

this.addKeyListener(new KeyListener() {
            public void keyPressed(KeyEvent e) { System.out.println( "tester"); }

            public void keyReleased(KeyEvent e) { System.out.println("2test2"); }

            public void keyTyped(KeyEvent e) { System.out.println("3test3"); }
        });

但这似乎不起作用,然后我尝试通过将键控代码放在外面来更改键控代码的位置

public Client() { }

然后我认为它可能是文件顶部的“实现”标签。所以我加了

implements KeyListener

到结束

public class Client extends JComponent

但是同样,这没有用,然后我做了更多的研究,似乎我需要通过使用将面板设置为集中

panel.setFocusable(true);

但是这个信息的来源,没有说把它放在哪里,我把它放在哪里都会抛出一个错误

有人可以帮我解释一下吗?

4

1 回答 1

4

看看@camickr,一个摇摆大师,文章Motion using the keyboard。使用KeyListeners有两个大问题,组件必须是可聚焦的并且必须是焦点。KeyBindings在挥杆中正确的做法是,将键绑定到特定动作。如何使用键绑定

于 2013-09-15T18:39:55.777 回答