2012-03-14 10 views
0

誰かがそれに従っているかどうかを簡単に質問できます。私はこのコードを持っています:Java 2D:非常に大量のタイルを画面上に素早くレンダリングしてください。

 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

データを別の方法で保存する必要があります(4D配列はほとんどの場合、悪い考えです)。

あなたのユースケースに合っていれば、それらの文字列の配列を多分ハッシュで置き換えることができます(その後、ループは1つしかありません)。

+0

どうすれば実装できますか?どのように私はハッシュで4D配列を格納するだろうか? – MrDrProfessorTyler

+0

4Dアレイを使用する理由を教えてください。それは何のデータですか? –

+0

ハッシュマップでアクセスされる文字列形式のファイルからロードされたデータ値。画面にペイントするイメージを取得します。私はマップのチャンク化を許可するためにアクセスするのが簡単なので4Dを使用します – MrDrProfessorTyler

関連する問題