Java 2D: визуализируйте очень большое количество плиток на экране быстро - PullRequest
0 голосов
/ 14 марта 2012

Еще один быстрый вопрос, если кто-нибудь до этого.У меня есть этот код:

        for(int cy = 0; cy < 3; cy++) {
            for(int cx = 0; cx < 3; cx++) {
                for(int y = 0; y < 16; y++) {
                    for(int x = 0; x < 16; x++) {
                        g2D.drawImage(Tiles.tileImages.get(C0.chunk[x][y][cx][cy]), 
                                C0.cX[cx][cy] * cspcr + (blckspcr * x) + width - pXspcr,
                                C0.cY[cx][cy] * cspcr + (blckspcr * y) + height - pYspcr + (int)(24.25 * zoom),
                                    blckspcr, blckspcr, null);
                        if(C0.chunk[x][y][cx][cy].equals("a05")) {
                            g2D.drawImage(Tiles.treetop, 
                                    C0.cX[cx][cy] * cspcr + (blckspcr * x) + width - pXspcr,
                                    C0.cY[cx][cy] * cspcr + (blckspcr * y) + height - pYspcr + (int)(24.25 * zoom) - blckspcr,
                                    blckspcr, blckspcr, null);
                        }
                    }
                }
            }
        }

, но моя проблема в том, что это создает невероятно большую задержку в моем приложении.Есть ли способ избежать использования большого количества петель или ускорить его?Изображение, которое оно рисует сначала, захватывает блоки из кусков в массиве 4D строк и получает изображения из хэш-карты на основе строки, а затем рисует изображение, используя набор чисел.Если кто-то может помочь, я был бы очень признателен.Спасибо!

1 Ответ

1 голос
/ 14 марта 2012

Вам нужно хранить данные по-другому (массив 4D почти всегда плохая идея).

Вы можете начать заменять этот массив строк 4D на хеш, если он соответствует вашему сценарию использования (тогда у вас будет только один цикл).

...