I'm making pong in java
If the ball goes out of bounds, pause
is set to true
:
if (ball.getX() <= 0) {
score2++;
pause = true;
}
if (ball.getX() >= this.getWidth()-ballWidth) {
score1++;
pause = true;
}
which should sleep the timer... after the thread has slept for 1000ms, pause will be set to false and the ball should continue moving (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);
}
Ball Class AutoMove() function:
public void autoMove(double velX, double velY) {
xLoc = this.getX()+velX;
yLoc = this.getY()+velY;
}
It does all of that... it sleeps, pause is set to false, etc... but when the ball is reset (reset in the middle of the screen...) after it pauses for 1 second, it jumps to the far side of the game panel which tells me that while the thread was "sleeping", ball.autoMove(velocityX, velocityY);
was still updating the coordinates.
Why is this happening? Shouldn't that not be run?
Thanks!