Возможно, я ошибаюсь, поэтому, пожалуйста, будьте милы. Я разрабатываю Java-игру, и я нахожусь на стадии тестирования движения/анимации персонажа.Вызов перерисовки из другого класса на Java?
«Лицо» может двигаться вверх по левому и правому краю сетки. Класс, в который вставляется сетка, является классом gamePanel. Кнопки находятся в классе gameControlPanel.
У меня есть кнопка, которая порождает человека на сетке. Затем у меня есть кнопка, чтобы переместить человека вверх и вниз влево и вправо.
Когда нажата кнопка перемещения вверх, она вызывает метод перемещения вверх от класса человека. (На данный момент, я только тестирование одного «человека» в то время.) В этом методе есть следующий код ...
int move = 10;
while(move!=0)
{
setTopLeftPoint(new Point((int)getTopLeftPoint().getX(),
(int)getTopLeftPoint().getY() - 3));
try
{
Thread.sleep(300);
} catch (InterruptedException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
move-=1;
}
Проблема заключается в том, что я не могу назвать repaint для класса gamePanel из класса Person. Чтобы обойти это, я создал таймер в классе gamePanel, который переписывает каждые 20 мс.
Когда я нажимаю кнопку «вверх» после того, как человек порожден, кнопка остается нажатой до тех пор, пока циклы цикла while не будут завершены, а затем изображение круга отображается на квадрате квадрата выше.
Я постараюсь ответить на любые вопросы, касающиеся этого.
Я считаю, что несколько потоков слишком сложны для меня. У меня есть другой вопрос, который люди должны рассматривать как своего рода ответ на этот вопрос. Я решил сделать логическую перерисовку на каждом тике таймера 100 мс. – Relequestual