Рисовать игрока и пейзаж в игре? - PullRequest
0 голосов
/ 05 апреля 2011

Я просто играю в небольшую игру, чтобы получить больше опыта в Java. Панель, которая содержит все визуальные элементы, имеет двумерный массив в виде сетки для мозаичного ландшафта, а у меня есть как трава, деревья и вода. Чтобы правильно нарисовать правильные картинки на нужных плитках, требуется много операторов if и тому подобное. Это выглядело не очень хорошо, поэтому я переместил все операторы if для тайлов с водой (определяя, было ли это северное побережье или океан и т. Д.) В их собственный метод, но я заметил, что он сильно замедлился при попытке переместить мой характер вокруг. Я понял, что глупо перекрашивать фон каждый раз, когда я двигаюсь, так как это в основном остается прежним. Так как же я могу просто нарисовать фон и оставить все как есть, но все же перекрасить спрайт для персонажа, когда он перемещается по панели с разумной скоростью?

Ответы [ 2 ]

0 голосов
/ 05 апреля 2011

Используйте JPanel с фоновым изображением.Установите панель на GridLayout и добавьте JLabels к каждой сетке.Затем вы можете просто использовать метод метки setIcon (...) для перемещения вашего игрока из сетки в сетку.Таким образом, основной код будет:

oldLabel.setIcon (null);newLabel.setIcon (...);

Теперь Swing будет выглядеть после перекраски только двух квадратов сетки, которые изменились.

0 голосов
/ 05 апреля 2011

У меня была похожая ситуация, когда я просто хотел переместить регистрационную линию по биржевой диаграмме, не перерисовывая биржевую диаграмму, чтобы найти новую позицию линии.

Ответ заключается в использовании буферизованного изображения. Нарисуйте статические части на изображении, сохраните его как изображение за кадром, а затем вызывайте его на экране каждый раз, когда вы хотите нарисовать движущийся объект (ы) на изображении. Это довольно легко реализовать и работает очень хорошо.

Надеюсь, это поможет.

Джон Р. Донер

...