我正在用java做乒乓球
如果球出界,pause
则设置为true
:
if (ball.getX() <= 0) {
score2++;
pause = true;
}
if (ball.getX() >= this.getWidth()-ballWidth) {
score1++;
pause = true;
}
哪个应该让计时器休眠...在线程休眠 1000 毫秒后,暂停将设置为 false 并且球应该继续移动(ball.autoMove()
):
public void timer() {
int initialDelay = 1000;
timer.scheduleAtFixedRate(new TimerTask() {
public void run() {
if (pause) {
try {
ball.reset(width/2, height/2);
Thread.sleep(1000);
pause = false;
}
catch (InterruptedException e) {
e.printStackTrace();
}
}
ball.autoMove(velocityX, velocityY);
collisionCheck();
}
}, initialDelay, 100);
}
球类 AutoMove() 函数:
public void autoMove(double velX, double velY) {
xLoc = this.getX()+velX;
yLoc = this.getY()+velY;
}
它完成了所有这些......它睡觉,暂停设置为假,等等......但是当球在暂停 1 秒后重置(在屏幕中间重置......)时,它会跳转到游戏面板的另一端告诉我,虽然线程“休眠”,ball.autoMove(velocityX, velocityY);
但仍在更新坐标。
为什么会这样?那不应该运行吗?
谢谢!