我刚刚完成了关于制作网络游戏的在线教程。 它本身的游戏只是一个小圈子,在屏幕上跟随鼠标。
我一直在修改代码,使用键来移动圆圈而不是鼠标。然而,在我从未使用过“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'标签。所以我添加了
implements KeyListener
到
的结尾public class Client extends JComponent
但同样,这不起作用 然后我做了一些更多的研究,似乎我需要通过使用
来设置面板panel.setFocusable(true);
但是这个信息的来源,未能说明放在哪里以及我把它放在哪里都会抛出错误
有人可以帮我解释一下吗?
答案 0 :(得分:4)
看看@camickr,一位摇摆大师,文章Motion using the keyboard。使用KeyListeners
有两个大问题,组件必须是可聚焦的并且必须处于焦点。KeyBindings
是摆动的正确方法,将键绑定到特定操作。 How to Use KeyBindings