【发布时间】:2018-04-16 17:46:20
【问题描述】:
我正在尝试制作简单的游戏,但我的第一个问题是当我按下箭头键时我的矩形没有移动。
这是我的代码:
public class Gameseeting extends JPanel implements ActionListener, KeyListener
{
Timer tt= new Timer(5, this);
int x=2, y=210, velx=0,vely=0;
Gameseeting ()
{
tt.start();
setFocusable(true);
addKeyListener(this);
setFocusTraversalKeysEnabled(false);
}
public void paintComponent(Graphics g)
{
super.paintComponent(g);
g.drawRect(x, y, 40, 50);
}
public void actionPerformed(ActionEvent ae)
{
x += velx;
y += vely;
repaint();
}
public void keyPressed(KeyEvent e)
{
int code = e.getKeyCode();
if (code == KeyEvent.VK_DOWN) {
vely = 1;
velx = 0;
}
if (code == KeyEvent.VK_UP) {
vely = -1;
velx = 0;
}
if (code == KeyEvent.VK_LEFT) {
vely = 0;
velx = -1;
}
if (code == KeyEvent.VK_RIGHT) {
vely = 0;
velx = 1;
}
}
public void keyTyped(KeyEvent ke)
{
}
public void keyReleased(KeyEvent ke) {
velx=0;
vely=0;
}
}
我需要你的帮助,请告诉我我做错了什么。谢谢!
【问题讨论】:
-
您在
actionPerformed中调用了函数repaint();,但我在任何地方都看不到该函数? -
附带说明,类名应始终以大写字母开头。请参阅Java Naming Conventions。
-
您使用哪种颜色为矩形(和背景)着色?当您在方法或
System.out.println()语句中添加断点以查看变量的内容时会发生什么?他们会改变吗?他们保持不变吗?方法是否按预期调用?还是不是?