Java - для анимации, как класс логики должен уведомлять слабосвязанное представление для перерисовки - PullRequest
1 голос
/ 10 марта 2011

Для приложения, которое часто перерисовывается, как «модель» должна уведомлять «представления» о том, что им нужно повторно перерисовывать один из своих компонентов.Это:

<code>
class AppLogic extends Observable {
  void runAnimation() {
    while (isAnimationRunning) {
      modifyDataStructures();
      setChanged();
      notifyObservers();
      Thread.sleep(25);
    }
  }
}</p>

<p>class View extends JComponent implements Observer {
  void update(Observable o) {
    o.getData();
    innerPanel.repaint();
  }
}

кажется ужасным способом анимации панели, особенно если анимация перерисовывается большую часть времени работы программы.Какие-либо предложения?Спасибо.

* Игнорировать очевидные ошибки в многопоточности и тому подобное

Ответы [ 2 ]

2 голосов
/ 10 марта 2011

Предполагая, что вы создаете своего рода приложение "Панель инструментов", которое периодически обновляет информацию, делайте то, что говорит этот ответ . Если вы хотите что-то более продвинутое (например, анимацию для игры), вам нужно больше работать. Посмотрите эту статью , чтобы узнать о некоторых интересных моментах о программировании игр и анимации на Java.

1 голос
/ 10 марта 2011

Вместо того, чтобы «запускать» бизнес-логику, вы можете использовать таймер Swing в компоненте View и просто попросить бизнес-модель нарисовать себя, например, передав текущее время в качестве параметра.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...