我正在尝试编写经典的Breakout游戏,并将其作为编程任务的一部分。我必须从用户的鼠标单击开始移动球。所以我正在使用鼠标监听器来实现这一目标。下面的代码只是我想要做的一个更小,更简单的版本。但是,它不会逐步移动球。在执行while循环后,它仅将球显示在其最终位置。
import acm.graphics.*;
import acm.program.*;
import acm.util.*;
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
public class BallMoveTest extends GraphicsProgram {
public void run() {
ball = new GOval(20,20);
ball.setFilled(true);
add(ball, 100, 100);
addMouseListeners();
}
public void mouseClicked(MouseEvent e) {
while (counter < 100) {
moveBall();
counter++;
pause(20);
}
}
public void moveBall(){
ball.move(2, 2);
}
// Private instance variables
private GOval ball;
private int counter = 1;
}
但是,此替代代码效果很好,但不允许用户单击以开始球的运动。
import acm.program.*;
import acm.graphics.*;
public class TestGOval extends GraphicsProgram {
public void run() {
int counter = 1;
GOval ball = new GOval(20,20);
ball.setFilled(true);
add(ball,100,100);
while (counter < 100) {
ball.move(2, 2);
counter++;
pause(20);
}
}
}
有人可以指出我在这里做错了什么,更重要的是,为什么第一个代码块无法按预期工作?
PS:这是我的第一个问题,我是编程的新手。如果可以的话,请对我放松。:)
可能只是您没有显示所有代码,但应该有一个实现MouseListener的类。仅用鼠标单击的方法不足以让Java识别出这是您的意图。这里有一个更详细的教程:http : //docs.oracle.com/javase/tutorial/uiswing/events/mouselistener.html
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句