【发布时间】:2015-01-02 08:06:11
【问题描述】:
我试图在一个连续循环中移动一个正方形,在循环运行时留下一条轨迹(想想 BMtron 游戏),但是当我使用我的 keylistener 移动正方形时,屏幕冻结,并且尽管循环继续运行,但对象不会移动。这是一个sn-p:
public void keyPressed(KeyEvent e) {
//System.out.println("keyPressed");
if (e.getKeyCode() == KeyEvent.VK_RIGHT) {
//moveRight();
//down.start();
U = false;
D = false;
L = false;
R = true;
while (R = true) {
x = x + 2;
repaint();
System.out.println("Right");
}
} else if (e.getKeyCode() == KeyEvent.VK_LEFT) {
R = false;
U = false;
D = false;
L = true;
while (L = true) {
//moveLeft();
x = x - 2;
repaint();
System.out.println("Left");
}
} else if (e.getKeyCode() == KeyEvent.VK_DOWN) {
R = false;
U = false;
L = false;
D = true;
while (D = true) {
//moveDown();
y = y + 2;
repaint();
System.out.println("Down");
}
} else if (e.getKeyCode() == KeyEvent.VK_UP) {
R = false;
D = false;
L = false;
U = true;
//System.out.println("");
while (U = true) {
y = y - 2;
repaint();
System.out.println("Up");
}
}
}
如果你想要完整的代码,请告诉我。
【问题讨论】:
-
while 循环不应在关键事件处理程序中
-
while(R=true)这个循环(和其他循环)是无稽之谈。首先,它应该是while(R==true)(或只是while(R)),其次,您不会在循环内更改R的值。那么应该如何退出循环呢?R永远不会变成false。 -
我脑海中的想法是。按下箭头键时使用按键侦听器。侦听器将应用相应的操作。前任。如果您按下右箭头键,侦听器会将对象无限向右移动,直到您按下另一个键。因此,如果对象向右移动,它会一直这样做,直到您按下……例如向下箭头键,然后它会关闭 R 布尔值并激活 D 布尔值。至少我脑子里是这样的。我对 Java(和编程)很陌生