Как создать плиточную карту в Java?
Вопрос
Итак, у меня есть изображение плитки tile.png, и я пытаюсь создать мозаичную карту по всему окну. Я строю это как апплет. Так выглядит мой метод рисования, но он не эффективен. Когда я запускаю апплет, это занимает около 2 секунд, и весь экран закрашивается слева направо с изображением, а не все отображается сразу. Кроме того, все это выглядит как один большой tile.png, а не как 40 маленьких экземпляров tile.png
public void paint(Graphics g)
{
Image tile=getImg("tile.png");
int width=this.getWidth();
int height=this.getHeight();
int x;
int y;
for (x=0; x<= width; x++)
{
for (y=0; y<= height; y++)
{
g.drawImage(tile, x, y, this);
}
}
}
Кстати, файл tile.png имеет размер 10 x 10 пикселей, это фактическое изображение:
tile.png http://img12.imageshack.us/img12/1368/ tile.png р>
Редактировать: используя приведенный ниже код и улучшив изображение плитки, я исправил это. Вот мой новый тайл img на случай, если он кому-нибудь поможет:
Решение
for (x=0; x<= width / tileWidth; x++)
{
for (y=0; y<= height / tileHeight ; y++)
{
g.drawImage(tile, x * tileWidth, y * tileHeight, this);
}
}
Вам необходимо сместить ширину / высоту плитки. Р>
Другие советы
Как примечание, вы, вероятно, захотите начать проверку " области обрезки " в какой-то момент и не рисуя вещи за пределами этого региона. Ваш код настроен очень хорошо для этого.
Еще одна вещь, которую вы можете сделать, чтобы ускорить ее, - это "Двойной буфер". Создайте компонент размером с вашу карту, вызовите getGraphics () для этого компонента, сделайте все свои рисунки для этого нового графического объекта, затем просто нарисуйте свой компонент к реальному объекту Graphics, переданному в ваш метод рисования.
Хорошая вещь в этом заключается в том, что вы можете нарисовать всю карту до того, как вы когда-либо нажмете на оператор рисования, а затем мгновенно вытолкнуть ее.
Google Double Buffering на Java для получения дополнительной информации.