Java 2D:快速在屏幕上渲染大量的图块

时间:2012-03-14 00:56:56

标签: java performance 2d render paintcomponent

另一个快速问题,如果有人接受它。我有这段代码:

        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 个答案:

答案 0 :(得分:1)

您需要以不同的方式存储数据(4D阵列几乎总是一个坏主意)。

如果符合你的用例(你只有一个循环),你可以开始用散列替换那些4D字符串数组。