Я пытаюсь заставить Java подождать 1 секунду, прежде чем вычислять оператор if, чтобы узнать, должен ли он изменить логическое значение.
Я установил, что если Rectangle r пересекает Rectangle y, логическое «Intersect» становится истинным, а r перемещается назад. Спустя 1 секунду я хочу, чтобы оператор if проверял, пересекает ли r все еще y. Если нет, «Intersect» снова становится ложным и r прекращает движение назад. Как я могу это сделать? Эти операторы находятся в одном потоке, и в них включена анимация, поэтому Thread.sleep()
не работает, так как делает анимацию очень нервной.
Вот фрагменты кода, которые имеют отношение к проблеме:
import javax.swing.*;
import javax.swing.event.*;
import java.awt.*;
import java.awt.event.*;
public class Game extends JFrame {
boolean p1Intersect=false;
private class Move1 extends Thread {
public void run() {
if((p1horizontal.intersects(grass1)&&(hleft==true||hright==true)&&p1Intersect!=true) { //Normal speed
p1Speed = 5;
}
if(p1horizontal.intersects(edge2)&&hleft==true) { //moves backwards after collision as long as p1Intersect = true
p1Speed=-4;
p1Intersect=true;
}
if((p1horizontal.intersects(edge2)&&hleft==true)==false) { //This is the statement that I would like to wait for 1 second before executing
p1Intersect=false;
}